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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM