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 を使用して同じコードをプログラムする方法を誰かが教えてくれれば、非常に役に立ちます。