gpt4 book ai didi

c - GCC 如何决定输出汇编函数的顺序?

转载 作者:太空狗 更新时间:2023-10-29 16:38:49 24 4
gpt4 key购买 nike

通读 GCC 为我的项目中的 C 文件生成的程序集,我注意到函数在程序集中的输出顺序与它们在源文件中出现的顺序不同。这种重新排序的目标是什么?GCC 使用什么启发式方法来决定顺序? (它只是保存函数的数据结构的产物吗?)这不是 -freorder-functions,因为我没有使用 -fprofile-arcs

最佳答案

过程间优化阶段的后期部分使用调用图的自底向上遍历;这就是您看到的顺序。 GCC这部分的原始设计有一篇论文here (从前一段时间;这东西首先出现在 GCC 3.4 中)。

您可以使用 -fno-toplevel-reorder(或 -fno-unit-at-a-time 用于较新版本的 GCC)来阻止重新排序,但是这会禁用一些相关的优化。

关于c - GCC 如何决定输出汇编函数的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6886567/

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