我正在尝试编译调用 c++ 函数的汇编代码。以及调用汇编代码的 c++ 代码。我在 Windows 7 中使用 Dev-C++4.9.9.2 和 nasm。有人可以告诉我如何编译以下代码,以便它们生成工作程序。这些代码取自讲义。
从汇编示例调用 C++
//C++ file
#include <iostream>
using std::cout;
void swap(int *p1, int *p2);
{
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
;NASM file
extern _swap
x: dd 4
y: dd 7
push dword y
push dword x
call _swap
add esp, 8
从 C++ 示例调用程序集
;NASM file
global _swap
_swap:
mov ecx, [esp+4]
mov edx, [esp+8]
mov eax, [ecx]
xchg [ecx],eax
ret
//C++ file
#include <iostream>
using std::cout;
void swap(int *p1, int *p2);
int main()
{
int a = 10, b = 20;
cout << "a=" << a << "b=" << b;
swap(&a, &b);
cout << "a=" << a << "b=" << b;
system("PAUSE");
return 0;
}
此外,如果有人可以向我展示如何使用 Visual Studio 2010 C++ 和 NASM 编写相同的代码,那将非常有帮助。