【问题标题】:Why is my compiler creating duplicate assembly functions为什么我的编译器会创建重复的汇编函数
【发布时间】: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


【解决方案1】:

icc 编译器以为不同的处理器多次编译相同的函数并将启动代码放入其中一个以在运行时使用而闻名。我怀疑这就是这里发生的事情。

【讨论】:

  • 好的,这就解释了。谢谢!
猜你喜欢
  • 2011-01-25
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多