2

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

4

1 に答える 1