楔子:
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编译链。