c++中调用64位汇编函数

众所周知从vs2005开始微软就不支持在c++中内联汇编了。会出现如下的错误
名称:  提示错误.png查看次数: 284文件大小:  10.4 KB
如果我们要在程序中内联汇编的话就要把汇编单独编译成一个文件,然后自定义规则生成obj,在链接的时候添加进去。
网上有32位的汇编与C++相互调用的例子,今天说的是X64的,其实也就是有一点差别。
步骤如下:
1.编写一个ASM文件
extern        MessageBoxA:proc
.data
text     db 'Hello x64!', 0
caption  db 'My First x64 Application', 0

.code
  MyMessage proc 
  
        xor r9,r9
        lea r8, caption
        lea rdx, text
       xor rcx,rcx
       call MessageBoxA

  ret 
  MyMessage endp

end
要注意X64汇编与X32的不同,尤其是参数的传递,这方面可以参考论坛里面的X64教程。
2.用VS2008创建一个项目,然后把ASM添加进去。
3.修改自定义规则如下。
名称:  修改规则如下.png查看次数: 283文件大小:  16.1 KB
4.编写调用函数
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
extern "C" int __stdcall  MyMessage ();

int main(int argc, _TCHAR* argv[])
{

  MyMessage();
 system("pause");
 return 0;
}
5编译链接
6.执行结果
名称:  X64结果.png查看次数: 282文件大小:  14.1 KB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值