.Net AOT--Win11搭建和编译 X64 汇编
2023-03-07 09:09:15 时间
楔子:
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文件,双击就会弹出对话框。
结尾:
通过上面的过程以及结果,可以看到了一个完整的AOT编译链。
相关文章
- 如何在 Linux Mint 上安装 GNOME 桌面环境
- MPP与Hadoop,两种主流大数据系统架构有啥区别?
- 大数据项目可能出错的五种方式
- Eureka中读写锁的奇思妙想,太顶了
- 统计千行代码Bug率,有没有意义?
- 两个简单的代码片段让你的图表动起来
- 七种大幅度减少代码复查时间的方法
- 两种主流大数据系统架构的区别,终于有人讲明白了
- 五个 Chrome 简单实用的日常开发功能详解,赶快解锁让你提升更多效率!
- 重点改进侧边栏,Dev 频道微软 Edge 浏览器更新至 110 版本
- 重磅!七国集团决定制裁Go语言!
- Windows 11 学院:如何开启 Windows 11 自动色彩管理(ACM)功能
- Openharmony 军棋工兵寻径算法的实现
- 这个新 Go 错误处理提案,能解决问题不?
- 实现React过程中一次有趣的问题排查经历
- Linux 中的 su 和 sudo 命令有什么区别?
- 从 2022 年优秀 Linux 发行版中挑选你喜欢的版本
- 系统总出故障怎么办,或许你该学学稳定性建设!
- 面试官:Semaphore在项目中有使用过吗?
- 七张图,学会做有价值的经营分析