gpt4 book ai didi

ios - GCC 优化 : use of ARM conditional instructions?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:27:47 27 4
gpt4 key购买 nike

我正在查看一些在 XCode 中为 iOS 编译的代码(因此使用 gcc 为 ARM 编译),据我所知,编译器从未使用过 ARM 允许任意指令附加条件的功能,但总是根据条件分支,就像英特尔和其他架构一样。

这仅仅是 GCC 的限制吗(我可以理解它可能是:“condition = branch”在编译器体系结构中嵌入的级别太高而不允许其他方式),或者是否有一个特定的优化标志需要打开以允许编译条件指令?

(很明显,我很欣赏我对“应该”使用条件指令的位置做出了很大的假设,并且实际上是一种优化,但我有对早期 ARM 芯片进行编程以及使用和分析 Acorn 的原始输出的经验ARM C 编译器,所以我有一个大概的想法。)

更新:感谢以下信息,对此进行了更多调查,结果是:

  • XCode 在 Thumb-2 模式下编译,在该模式下,任意指令的条件执行不可用;
  • 但在某些情况下,它确实使用 ITE (if-then-else) 指令来有效地生成具有条件执行的指令。

最佳答案

看到一些实际的汇编会让事情变得清晰,但我怀疑 iOS 编译的默认设置更喜欢生成 Thumb 代码而不是 ARM 以获得更好的代码密度。虽然 Thumb32 aka Thumb-2 中有伪条件指令(通过 IT 指令支持 ARMv7 架构),但原始的 Thumb16 只有条件分支。此外,即使在 ARM 模式下,也有一些指令不能是有条件的(例如,许多 NEON 指令使用扩展​​操作码空间并将条件字段设置为 NV)。

关于ios - GCC 优化 : use of ARM conditional instructions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5721703/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com