2011-09-19 12 views
1

パフォーマンスクリティカルなセクションでasm言語を使用するプログラムをgccで作成していますが、実行時に正しいアーキテクチャでプログラムが実行されていることを確認します。特に、私はLinux上でia64(Itanium)とx86_64を区別する必要があります。プログラムでプロセッサタイプを検出する(Linux)

私は/ proc/cpuinfoを読んでいますか? clunkyと思われますが、私は適切なカーネル呼び出しを見つけることができません。

答えて

2

IA64とx86_64は全く異なるアーキテクチャです。 x86ベースのシステムでは、IA64ベースのシステムでは市場浸透率が低い理由の1つがx86命令セットとの非互換性の原因の1つになります。既存の従来の32ビットx86ベースのアプリケーションの幅広い配列を実行します)。

ベストは、プログラムの2つの異なるバージョンをコンパイルし、ユーザーがプログラムを呼び出すときにラッパースクリプトを使用して適切なバイナリを選択することです。

2

/proc/cpuinfoは、LinuxのCPU情報の標準インタフェースです。

これはアーキテクチャに依存しないための最適なオプションです。

+1

はサンプルのためhttp://stackoverflow.com/questions/9629850/how-to-get-cpu-info-in-c-on-linux-such-as-number-of-coresを参照してください。コード。 – bleater

2

答えはすでに掲載されていますが、私はこれを追加します:

マシンはx86またはx64の場合は、cpuid命令を通じて、より詳細な情報を得ることができます。

http://en.wikipedia.org/wiki/CPUID

+0

ありがとう... SSE/MMXが利用可能かどうかを検出したいので、これはまさに私が必要としていたものでした。他の回答を見ると、これはx86_64とia32の間にのみ関連しています。 – Fixee

+0

@Fixee:それはx86とx64の両方で動作しますが、Itaniumでは動作しません。 – Mysticial

関連する問題