首页
社区
课程
招聘
编译64位程序时使用汇编的方法总结
发表于: 2021-11-5 13:15 27967

编译64位程序时使用汇编的方法总结

2021-11-5 13:15
27967

目前在科锐学习3阶段已经尾声,这一年多来不仅仅是正向、逆向能力的提升,同时在对问题查找答案的方法上也有了很大的进步。
在32位程序开发中可以很方便的使用内联汇编(_asm、_asm{}),随着时代的发展,64位程序开发的需求也逐渐增多。但很遗憾微软并不想让我们在64位程序中随随便便(像原来一样)的用内联汇编。
今天正在做作业,64位的ARK工具,一些功能使用汇编(比如屏蔽中断、恢复、拿CR4)更为方便,结合老师的讲解以及网络查询的资料,做一下整理。

/c是只编译不链接,钱老师n久之前讲过的知识。

默认添加的是不参与生成的,需要手动设置一下


选择自定义生成工具后点击应用,会出现新的选项。


在“自定义生成工具”中设置“命令行”和“输出文件”。

输入完毕点击确定,然后编译工程测试下,会看到输出了 .obj文件。

声明.asm中的函数并编写测试代码使用它。

测试结果正常,当然还有一种类似的方法,更为简单

右键点击工程名,在弹出的菜单选择“生成依赖项”----> “生成自定义”

勾选 masm后确定


这里可以在解决方案资源管理器里,右键选中添加的.asm文件,然后在弹出菜单中选择“属性”,查看下“项类型”是否为“Microsoft Macro Assembler”,如果不是,那需要手动设置下。一般情况下在添加了生成自定义,这时候是不需要自己再对文件设置了。

我自己更倾向于最后一种方法,原因就是简单,之后再添加.asm文件不需要额外的设置了。哪里写的不对的请多多指正。
2021年11月5日13点14分

win10 20H2(19042.928)
Visual Studio 2019(16.11.5)

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 8
支持
分享
最新回复 (15)
雪    币: 6584
活跃值: (4541)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
2
收藏备用
2021-11-5 13:55
0
雪    币: 630
活跃值: (570)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
收藏
2021-11-5 15:14
0
雪    币: 1821
活跃值: (1928)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
13点14分
2021-11-5 18:02
0
雪    币: 10727
活跃值: (7637)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
收藏备用
2021-11-5 19:29
0
雪    币: 8447
活跃值: (5041)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
6
mark
2021-11-6 19:16
0
雪    币: 5291
活跃值: (4768)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
还有一种方法使用英特尔编译器
2021-11-6 20:10
2
雪    币: 9034
活跃值: (6255)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
怀念函数里直接嵌入汇编的日子
2021-11-7 00:04
0
雪    币: 5127
活跃值: (3876)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
只用过最后一种。学习了!
2021-11-7 00:17
0
雪    币: 7970
活跃值: (4724)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
插眼收藏 感谢楼主 最近正被这问题困扰,非常及时
2021-11-7 04:53
0
雪    币: 1282
活跃值: (4570)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
还有llvm编译器和intel编译器直接写内联汇编的方式没有介绍
2021-11-8 08:49
1
雪    币: 6331
活跃值: (1457)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
收藏学习,共同进步
2021-11-10 17:40
0
雪    币: 8764
活跃值: (5240)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
收藏学习,共同进步 
2021-11-10 22:00
0
雪    币: 199
活跃值: (161)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
收藏
2021-11-11 15:00
0
雪    币: 7379
活跃值: (4086)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
学习到了,平时用的第二种
2021-11-11 18:54
0
雪    币: 6347
活跃值: (2149)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
clang支持内联64位汇编的
2021-11-18 23:19
0
游客
登录 | 注册 方可回帖
返回
//