GCC C++ 名称修改参考

GCC C++ Name mangling reference

环顾四周,我看到的问题主要是关于分解 C++ 符号而不是如何分解它们。是的,可以调用 g++,使用 -S 选项,在一些包含要被破坏的符号的虚拟代码上,然后检查生成的程序集,但我一直无法找到一个好的参考或关于 GCC 名称修改的规范。我能找到的最接近的东西是 http://www.int0x80.gr/papers/name_mangling.pdf,但它似乎没有涵盖诸如名称模板实例化如何被破坏或为什么 _Z3fooIN3BarEE3FooIXT_EEv 会转换为 Foo<Bar> foo<Bar>() 之类的内容(尽管我可以看看如何,但是 IXT_EE 到底是什么?为什么这个 _Z 后面没有 N?那是什么意思?)。

引自source code of gcc's implementation of name mangling

This file implements mangling of C++ names according to the IA64 C++ ABI specification.

这是此规范中的规则: https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangling