1

私はいくつかのアセンブラ モジュールを作成し、FASM でそれらのサイズを定義するために定数変数を使用しました。

FASM オブジェクト ファイルとリンクした後、これらの変数を VC++ で使用するにはどうすればよいですか?

たとえば、私のアセンブラ コードが次のような場合:

start: //function declaration, exported
xor eax, eax
inc eax
retn
end_func:

サイズはend_func - start

end_func - startのサイズを VC++にエクスポートするにはどうすればよいですか?

4

1 に答える 1

1

publicFASM 側のディレクティブを使用して変数をエクスポートし、extern.

以下に短い例を示します。

// --- test.asm ---
format MS COFF

public counter as '_counter' 

section '.data' data readable writeable
counter dd 0x7DD

// --- example.cpp ---
#include <iostream>

extern "C" long int counter;

int main() {
    std::cout << "Hello " << ++counter << "!" << std::endl;
    return 0;
}

// --- Compile, Link and Run ---
> fasm test.asm
> cl /EHs example.cpp test.obj
> example.exe

// --- Output: ---
Hello 2014! 

この例では、説明のためにコマンド ラインで MSVCcl.exeコンパイラを直接使用していますが、VS リンク プロジェクト設定でコードにリンクする fasm .obj 出力ファイルを追加するのは簡単です。

于 2014-01-07T11:50:03.500 に答える