楔子:
windows11上編譯x64匯編,很多人不太了解。甚至搞出DOSBox這種幾億年前的老古董,還有的專門搞些Linux下面的工具來搞到Windows上運行。其實這些大可不必,也沒這么麻煩。微軟技術出身,基本上工具鏈齊全。
本篇來看下Windows簡單的搭建X64匯編環境,非常簡單。
作用?
因為.Net 7 AOT的編譯就是這么搞的,ILC通過被封裝的ObjWriter.dll來操縱LLVM調用ml64生成目標文件。來具體來看看。
ml64
這個工具是微軟的新一代x64匯編編譯工具,主要是編譯.Obj。打開VS命令行工具:x64 Native Tools,它可以操縱前者。
代碼:
includelib User32.lib
extern MessageBoxA:Proc
.datag_CT db "Zhu Yoa Nei Rong!",0g_BT db "Biao Ti",0
.code
Winmain Procsub rsp, 68hmov rcx, 0mov rdx,offset g_CTmov r8,offset g_BTxor r9, r9call MessageBoxAadd rsp, 68hret
Winmain Endp
end
編譯成目標文件
把上面的代碼保存為test.asm
然后用命令:ml64 /c test.asm
編譯成 test.obj文件。
鏈接成exe
通過link的子系統來連接下這個Winmain入口函數:
link /subsystem:windows /entry:Winmain test.obj
結果:
最后得到了一個exe文件,雙擊就會彈出對話框。
結尾:
通過上面的過程以及結果,可以看到了一個完整的AOT編譯鏈。