VS2019解决X64无法内联汇编的问题

策略:VC编译器x64平台不支持内联汇编,我们利用在Source文件中直接添加asm文件,直接在asm文件中写汇编代码,然后将asm文件编译为OBJ文件。然后就可以在c++文件中声明asm文件中的函数后直接使用asm文件中用汇编写的函数。

设置步骤

先在源文件中添加一个asm文件

然后右击文件设置属性。设置“从生成中排出为:否”,如果为是这个asm文件就不会被编译为obj文件。接着需要设置项类型为:“自定义生成工具”。

然后在自定义生成工具的常规设置更改为如下设置。注意因为我们在asm文件中写的是64位汇编所以编译命令行为ml64,如果写的是32位汇编则是ml32(当然32位我们可以直接使用内联汇编,没有必要在添加一个asm单独编译为obj文件)

这样我们就可以在asm文件中写x64汇编了,可以在VS扩展商店中下载AsmDude插件这样汇编代码就可以高亮显示。
也可以在github上直接下载:https://github.com/HJLebbink/asm-dude/releases

asm文件编写汇编格式

一般汇编函数编写的格式如下

然后在c++源文件中声明此函数,注意函数声明前一定要加extern “C”,防止c++编译器为了完成函数重载对函数名称进行修饰。

extern "C" void ProcName();

VS2019配置驱动开发环境
https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk

原文地址:https://www.cnblogs.com/revercc/p/14609685.html