【发布时间】:2021-04-24 00:42:31
【问题描述】:
我正在查看编译器为 C 文件生成的 cod 文件,并注意到相同的函数被定义了两次,除了其中一个将 ..0 附加到损坏的名称并具有 .globl 和 @987654324 @也一样。该函数仅在 C 文件中定义一次。我认为这是为了使其中 1 个在文件之外可见?为什么编译器会这样做?
例如:
# -- Begin _ZN9wikipedia7article6formatE
.text
# mark_begin;
.align 16,0x90
.protected _ZN9wikipedia7article6formatE
.globl _ZN9wikipedia7article6formatE
_ZN9wikipedia7article6formatE:
对
# -- Begin _ZN9wikipedia7article6formatE..0
.text
# mark_begin;
.align 16,0x90
_ZN9wikipedia7article6formatE..0:
【问题讨论】:
-
它是什么编译器,有哪些选项?它可能是function cloning 的一个例子。
标签: c assembly compiler-optimization icc