32bitと64bitコード

出典: PS3 Linux Information Site / Cell/B.E.のパワーを体験しよう

CellのPPEは64bitプロセッサーでSPEは32bitプロセッサーです。 Fedora Core5は64bitに対応したLinuxを使用しているので、ユーザーはPPEプログラムを32bitでコンパイルしても64bitでコンパイルしてもかまいません。とはいえSPEが32bitでPLAYSTATION3のメインメモリが256MByteである事を考えると、あえて64bitでコンパイルする必要はないように思えます。

現在の開発ツールではデフォルトでは ppu-gcc(ver 4.0.2)だと64bitコードを、gcc(ver 4.1.0)だと32bitコードを作成します。 明示的に指定したいときはコンパイラとリンカに -m32 または -m64 オプションを指定します。 例えばこのように指定します。

$ ppu-g++ -Wall -O3 -m32 ppe-main.cpp -c

作成したelfファイルの命令長を確認したいときは例えば readelf -aコマンドを使います。

$ readelf -a ppe.out | head
ELF ヘッダ:
  マジック:  7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00
  クラス:                            ELF32
  データ:                            2 の補数、ビッグエンディアン
  バージョン:                        1 (current)
  OS/ABI:                            UNIX - System V
  ABI バージョン:                    0
  タイプ:                            EXEC (実行可能ファイル)
  マシン:                            PowerPC
  バージョン:                        0x1

また64bitコードではlongとlong longとポインターが64bitな、いわゆるLP64になります。

$ ./ppe.out
int = 4
long = 8
long long = 8
void* = 8



Cellプログラミングのレシピに戻る

表示
個人用ツール
Open Source Projects