C++函数调用汇编模块

C++ Function Calling Assembly Module

本文关键字:模块 汇编 函数调用 C++      更新时间:2023-10-16

我想在汇编中编写一个自定义模块,并让C++函数调用它。我不想从头开始,而是想用C编写"草稿",让编译器生成一个蓝图汇编源,即/FA编译器选项生成的列表文件。

然而,我发现生成的所有过程名称都已经是修饰形式。此外,MASM将再次进行自己的名称修饰。因此,如果我在不首先手动取消编译器生成的过程名称修饰的情况下组装我的版本,我会得到一个链接器错误,因为函数名称将不匹配。

是否可以防止这种类型的重复名称装饰?

声明函数extern "C"应该会导致生成的汇编程序显示您应该在汇编程序中使用的名称。只是不要忘记在稍后向C++声明它的头中使它成为extern "C"

您可以将函数声明为extern "C"。这样,它最多会在名称前加一个下划线:

extern "C"{
  void foo(int bla){
  }
}

将成为

_foo