Visual Studio-X64汇编编写方法
作者:向你扔鸡爪
本文介绍了在Visual Studio中配置64位汇编环境和C++与汇编的混合编程的方法,详细说明了设置平台工具集、生成依赖项、链接器等步骤,并提供了解决可能出现的编译错误的方案,感兴趣的朋友跟随小编一起看看吧
纯64位汇编:
includelib ucrt.lib includelib legacy_stdio_definitions.lib includelib user32.lib extern printf:proc extern MessageBoxA:proc .data szFormat db "%s",0 szHello db "HelloWorld",0 szRk db "123",0 .code start proc sub rsp,28h mov rdx,offset szHello mov rcx,offset szFormat call printf mov r9,0 mov r8,offset szHello mov rdx,offset szRk mov rcx,0 call MessageBoxA add rsp,28h ret start endp end
注意:
1.平台工具集要选VS2015
2.属性->生成依赖项->masm
3.链接器->高级->入口点
64位混合编程(C++/Asm):一定要严格执行代码规范,不然各种报错
1.asm:
includelib legacy_stdio_definitions.lib includelib user32.lib extern printf:proc .data szformat db "%s\n",0 .code Myadd proc sub rsp,28h add rcx,rdx mov rax,rcx add rsp,28h ret Myadd endp Myprintf proc sub rsp,28h mov rdx,rcx lea rcx,szformat call printf add rsp,28h ret Myprintf endp end
main.cpp:
#include <iostream> #include <windows.h> EXTERN_C UINT64 Myadd(UINT64 a, UINT64 b); EXTERN_C void Myprintf(const char* szbuffer); int main() { UINT64 num = Myadd(1, 2); printf("%lld\r\n", num); Myprintf("hello word"); system("pause"); return 0; }
注意:
如果生成报错,并且没有属性里面没有Microsoft Macro Assembler,换成VS2015也没有的话,
就在源文件里面找到.asm后缀的文件右键属性->常规->项类型->Microsoft Macro Assembler即可。
到此这篇关于Visual Studio-X64汇编编写的文章就介绍到这了,更多相关Visual Studio-X64汇编内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!