0

ちょっと興味があるんだけど。Ubuntu9.10でgcc/gdbを使用する。

オブジェクトファイルの逆アセンブルも頻繁に行うCブックを読む。1月に読んだとき、私の分解は本の分解によく似ています。今では、それはまったく異なります-おそらくより最適化されています(少なくとも私がチェックしたファイルでは、最適化されているように見えるので、アセンブリコードのいくつかの再配置に気づきました)。最初の読み取りと2番目の読み取りの間にgccに最適化オプション-O1---O3を使用しましたが、最初の読み取りの前には使用していません。

(1)最適化オプションの使用は永続的ですか、つまり、一度使用すると、スイッチを切るまで使用しますか?それは奇妙なことです(眉をひそめた男ファイルで、少なくともそのようなものは何も見られませんでした)。万が一それが真実である場合、どのようにそれらをオフにしますか?

(2)gccのアセンブリは、最近のアップグレードによって変更されましたか?

(3)同じコンパイルオプションが選択されていても、gccは(大幅に)異なるアセンブリコードを生成することがありますか?

どうもありがとう。

4

1 に答える 1

3

1)いいえ、オプションは持続しません。

2)はい、オプティマイザーは絶えず変更され、改善されています。gccパッケージがアップグレードされている場合、特定のソースファイル用に生成されたアセンブリが変更される可能性が非常に高くなります。

3)gccを使用したコンパイルは、決定論的なプロセスです。同じソースを同じバージョンのgccでコンパイルし、同じターゲットに対して同じオプションを使用する場合、生成されるアセンブリは同じである必要があります(いくつかのシンボル名を法として)。

于 2010-05-04T00:12:46.877 に答える