私は最適化したいCコードをいくつか持っています。インテル®Cコンパイラ(ICC)はGCCよりはるかに優れた仕事ですが、コンパイラのコピーがなく、非常に高価です。しかし、私はICCを使ってそれをコンパイルし、godbolt.orgでオンラインでアセンブリを入手できます。オンラインで入手できるアセンブリコードの使い方は?
このアセンブリをテキストファイルにコピーして貼り付けると、どのように機能実行可能ファイルに変換できますか?
私は最適化したいCコードをいくつか持っています。インテル®Cコンパイラ(ICC)はGCCよりはるかに優れた仕事ですが、コンパイラのコピーがなく、非常に高価です。しかし、私はICCを使ってそれをコンパイルし、godbolt.orgでオンラインでアセンブリを入手できます。オンラインで入手できるアセンブリコードの使い方は?
このアセンブリをテキストファイルにコピーして貼り付けると、どのように機能実行可能ファイルに変換できますか?
godbolt.orgがコンパイルするランタイム環境がランタイム環境と似ていることを確認することから始める必要があります(幸運にもこれは幸運です)。たとえば、Windowsを使用している可能性がありますし、godbolt.org linux(またはそれ以外の方法)を使用している可能性があります。そのため、アセンブリをシステムに持ってきてオブジェクトコードに変換できるかもしれませんが、リンクされず実行されません。
次に、アセンブリファイルからオブジェクトファイルを生成するために、godbolt.orgのintel Cコンパイラによって生成されたアセンブリの構文と互換性のあるプラットフォーム用のアセンブラを見つける必要があります。 (これで幸運です)
次に、Intel Cコンパイラによって生成されたコードに必要なランタイムライブラリ(再配布可能ファイル)をすべて見つける必要があります。 (これで幸運です)
最終的に、実行ファイルを生成するために、生成されたオブジェクトファイルをランタイムライブラリとリンクするリンカを取得する必要があります。 (その幸運を祈ってください)
私たちのアイデアがいかに不可能かを理解できるように、私たちは質問に正直な答えを必要とすることがあります。
OPは私が想定しているいくつかのルーチンについて話しているので、実際に必要なのは、単にgodboltからasmをコピーして、アセンブラの構文を調整するだけです。このQがなぜ存在するのか疑問に思うのですが、誰かがそれを知る知識が不足している場合、残りのプロジェクトと一緒にアセンブリファイルをアセンブルし、どのアセンブラを使用するのか、またどのように使用するのかを知るためにツールチェーンのドキュメントを掘り下げなければなりません代わりのものを使用してください(構文の調整を最小限に抑えるため)。また、アセンブリに精通していない場合は、エラーが発生しやすく、おそらく1〜5%のパフォーマンスにはならない可能性があります。 – Ped7g
@ Ped7gそれは妥当なことです、それは私があまりにも最初から考えていたことですが、最後の文で "このアセンブリをコピーしてテキストファイルに貼り付けると、それをどのように機能実行可能ファイルに変換できますか? "実際には、プログラム全体のアセンブリコードをすべて1つのアセンブリファイルで取得し、そこから実行可能ファイルを生成することを考えていると考えられます。 –
ありがとうございます。この特定の場合の問題は、iccではるかに優れたベクトル化です。私はそれが少なくとも2倍速くなると期待しています。私のシステムは、私が仮定しているLinuxと同じものですが、間違っている可能性があります。 – eleanora
私はこの問題をライセンス供与の対象にし、違法かもしれないと主張しているため、この質問を議論の対象外としています。 – max
自分のコードのアセンブリをコピーすることは違法だとは思わないのですか? – eleanora
@maxは "違法かもしれません"とは、質問を終わらせる理由ではありません。知識はそれ自身のために価値があり、知識によって可能になる行動が実行されると推測することはできません。特に、この場合の知識は実際にはできない***なので、***。 (また、「あるかもしれない」* insert-anything-here *は、質問を始めるための理由ではありません)そして、それは違法ではありません。彼女はコンパイラーをコピーしていないので、コンパイラの。公正使用。 –