Cell の SPE にオブジェクトファイルをロード出来るライブラリ libspes が、リロケート情報をリンク出来るようになった。
同一オブジェクトファイル内に限るが、文字列のようなデータを読み出したり関数を呼び出したりする事が出来る。
もうここまで来れば十分実用的で、SPE だけで自立してでかいプログラムを走らせられるようになる。もちろんロード出来る程度にプログラムとデータを小さく分割しなくてはならないが。
オブジェクトのロードは libspes が PPE 上のアドレスだけ教えてくれるだけで、転送は自力でやらなくてはいけないようにしている。自力とは言っても、オブジェクトそのものはアライメントされているので mfc_get 一発でいい。
こうやってプログラマに mfc_get を使わせる事で、プログラムを裏でロードしつつ処理という事も可能になる。
暇があればスタティックライブラリもロード出来るようにしたいのだが、GNU AR が吐くファイルフォーマットが Wikipedia の説明しか見つけられなかった。英語がちゃんと読めてないだけかも知れないが、実際のファイルにはパディングとか謎なデータが入っていて、それに対する説明が無い気がする。
情報でも感想でもバグレポートでもくれると嬉しいので、適当に足跡を残して欲しい。
<ぼそ>日によって敬語だったりそうじゃなかったり揺れるのはキニシナイ。</ぼそ>