程序集中的C++类函数

Syn*_*ror 1 c++ compiler-construction assembly function-calls

Hello社区我看看C++程序集,我已经从PARSEC套件编译了一个基准测试程序,我很难知道他们如何用汇编语言命名类属性函数.例如,如果我有一个类有一些函数来操作它,在cpp中我们称之为像test.increment(); 经过一些调查我发现这个函数是

atomic_load_acq_ptr
Run Code Online (Sandbox Code Playgroud)

表示为:

_ZL19atomic_load_acq_intPVj
Run Code Online (Sandbox Code Playgroud)

在集会中,或者至少这是我发现的.

如果我错了,请告诉我!是否有一些固定的映射规则?或者他们是随机的?谢谢

小智 6

这就是所谓的名字改编,是因为重载和模板的必要这样(即普通字符和号码名字不够明确识别的代码块;嵌入空格或<>::在名称通常是不合法的;复制无限制的,人类可读的形式的额外信息将是浪费的),因此它取决于类型,arity等.

确切的方案可能会有所不同,但通常每个编译器在相对较长的时间内都是自洽的(有时甚至有几个编译器可以单向解决).

  • 顺便说一下,OP方案的确切规则可以在http://www.codesourcery.com/public/cxx-abi/abi.html#mangling中找到. (3认同)