我编写了一些汇编程序模块并使用常量变量在 FASM 中定义它们的大小。
与 FASM 对象文件链接后,如何在 VC++ 中使用这些变量?
例如,如果我的汇编代码是这样的:
start: //function declaration, exported
xor eax, eax
inc eax
retn
end_func:
尺寸是end_func - start
如何将大小导出end_func - start
到 VC++ 中?
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 链接项目设置中与您的代码链接应该是微不足道的。