0

只是好奇。在 Ubuntu 9.10 下使用 gcc/gdb。

读一本 C 书,也经常给出目标文件的反汇编。一月份看的时候,我的拆解看起来很像书的;现在,它完全不同了——可能更优化了(我注意到现在汇编代码中有一些重新排列,至少在我检查的文件中,看起来优化了)。我在第一次和第二次读取之间使用了优化选项 -O1 - -O3 用于 gcc,但不是在第一次读取之前。

(1) 优化选项的使用是否持久,也就是说,如果你使用它们一次,你会一直使用它们直到关闭它们?那会很奇怪(浏览了 man 文件,至少没有看到任何类似的东西)。在不太可能的情况下,它是真的,你如何关闭它们?

(2) gcc 的程序集是否因最近的升级而改变?

(3) 尽管选择了相同的编译选项,gcc 是否有时会产生(显着)不同的汇编代码?

非常感谢。

4

1 回答 1

3

1)不,选项不会持续存在。

2) 是的,优化器在不断变化和改进。如果您的 gcc 软件包已升级,那么为特定源文件生成的程序集很可能会更改。

3)用gcc编译是一个确定性的过程;如果您使用相同版本的 gcc 和相同目标的相同选项编译相同的源代码,那么生成的程序集应该是相同的(以某些符号名称为模)。

于 2010-05-04T00:12:46.877 回答