我尝试在 VS2005 中将 C++ 工具移植到 x64。问题是,代码包含内联汇编,64 位编译器不支持。我的问题是,如果有更多的努力来用清晰的 c++ 编码或使用内在函数。但在这种情况下,并非所有汇编函数都可用于 x64,对吗?假设,我有一个简单的程序
#include <stdio.h>
void main()
{
int a = 5;
int b = 3;
int res = 0;
_asm
{
mov eax,a
add eax,b
mov res,eax
}
printf("%d + %d = %d\n", a, b, res);
}
我必须如何使用内在函数更改此代码才能运行它?我是汇编程序的新手,不知道它的大部分功能。
更新:
我按照 Hans 的建议进行了更改以使用 ml64.exe 编译程序集。
; add.asm
; ASM function called from C++
.code
;---------------------------------------------
AddInt PROC,
a:DWORD, ; receives an integer
b:DWORD ; receives an integer
; Returns: sum of a and b, in EAX.
;----------------------------------------------
mov eax,a
add eax,b
ret
AddInt ENDP
END
主文件
#include <stdio.h>
extern "C" int AddInt(int a, int b);
void main()
{
int a = 5;
int b = 3;
int res = AddInt(a,b);
printf("%d + %d = %d\n", a, b, res);
}
但结果不正确5 + 3 = -1717986920
。我想,指针出了点问题。我在哪里做错了?