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

public您可以使用FASM 端的指令导出变量,然后使用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编译器进行说明,但是在您的情况下,添加 fasm .obj 输出文件以在 VS 链接项目设置中与您的代码链接应该是微不足道的。

于 2014-01-07T11:50:03.500 回答