2
私はLLVMを使ってAlphaアセンブリを生成しています。彼らのAlpha ISAサポートは実験的なものであり、私はバグを回避する方法を見つけることができません。 LLVMのバイトコードからアルファへのアセンブリ作成時に-O0を使用すると、生成されたアセンブリは正常です。gccでクロスコンパイルしたLLVMアセンブリを最適化するにはどうすればよいですか?
しかし、最適化されたアセンブリが必要です。アセンブリを最適化するgcc(最終的なクロスコンパイラ)のオプションがありますか?アルファアセンブリをオブジェクトファイルに変換しながら-O3を試しましたが、最適化が行われていませんでした。アセンブリ作成後にバックエンド最適化を行うことも可能ですか?
アセンブリ言語を最適化することはもちろん可能です。結局のところ別の言語なので、すべての標準的な最適化手法が適用されます。いくつかの実際の例のためのGoogleの "最適化アセンブラ"。しかし、gccはそれをしません。 –
理論的には可能ですが、コンパイラの作者の多くは、そうしようとするとかなりの時間を費やす価値があると思います。 GCCはインラインアセンブリを含む関数を少なくとも最適化しているので、他の多くの人よりも優れていますが、GCCのインラインアセンブリコードを見てみると、これはかなり複雑になります。 – Voo