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
