【问题标题】:How can I export an FASM variable to VC++ Express 2012?如何将 FASM 变量导出到 VC++ Express 2012?
【发布时间】:2014-01-05 05:20:33
【问题描述】:

我编写了一些汇编程序模块并使用常量变量在 FASM 中定义它们的大小。

在与 FASM 对象文件链接后,如何在 VC++ 中使用这些变量?

例如,如果我的汇编代码是这样的:

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

大小为end_func - start

如何将end_func - start的大小导出到VC++中?

【问题讨论】:

    标签: c++ assembly fasm


    【解决方案1】:

    您可以在 FASM 端使用 public 指令导出变量,然后使用 extern 将其导入您的 C++ 代码。

    这是一个简短的例子:

    // --- 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! 
    

    该示例直接在命令行上使用 MSVC cl.exe 编译器进行说明,但是在您的情况下,添加 fasm .obj 输出文件以在 VS 链接项目设置中与您的代码链接应该是微不足道的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-06
      • 2019-08-20
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      相关资源
      最近更新 更多