.Net AOT--Win11搭建和编译 X64 汇编

楔子

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 
.data
    g_CT db "Zhu Yoa Nei Rong!",0
    g_BT db "Biao Ti",0
.code
Winmain Proc
    sub rsp, 68h
    mov rcx, 0
    mov rdx,offset g_CT
    mov r8,offset g_BT
    xor r9, r9
    call MessageBoxA
    add rsp, 68h
    ret
Winmain Endp
end

编译成目标文件

把上面的代码保存为test.asm

然后用命令:ml64 /c test.asm
编译成 test.obj文件。

链接成exe

通过link的子系统来连接下这个Winmain入口函数:

link /subsystem:windows /entry:Winmain test.obj

结果:

最后得到了一个exe文件,双击就会弹出对话框。

.Net AOT--Win11搭建和编译 X64 汇编

结尾:

通过上面的过程以及结果,可以看到了一个完整的AOT编译链。