PS3にFedora 8をインストールしてから
ほとんど何もしてなかったけど
最近勉強を始めたので少しずつ復習のつもりで書いていきたいと思います。
簡単な命令を説明する前の表記法と規則について説明しておきます。
詳しくは
Sony Computer Entertainment Inc.より
SPU Assembly Language Specificationを読んでください。
命令の例として
li rt, ra, rb, rc
ってのがあった場合、
liは命令
rtはターゲットレジスタ。大体はここに演算結果が入る。
演算結果をストアするときには逆になる。
ra,rb,rcはソースレジスタ。これらは演算するときに参照するレジスタとなる。
Cellにはレジスタが128個あります。
レジスタは$で指定して0~127まで使えます。
また、
s3,6,7,10,11,14,16は各ビットの符号拡張される値。
s16の場合、16ビットの値で、正負のどちらも入る。
u7,14,16,18は各ビットの符号なしの値。
u18だと、18ビットの正の値のみ。
同じビット数で正の値しか使わないなら符号なしの方が
より大きい値を使用することが可能。
liは即値のロードで
li rt, s16 となっています。
aはワードの加算
a rt, ra, rb
なので、
s = a + bとして
s = 1+2なら
li $4, 1
li $5, 2
a $6, $4, $5
とすると、$3に演算結果が入ります。
ちなみに
aiはレジスタの値と即値の加算なので、
計算の値が定数値ならば
li $4, 1
ai $6, $4,2
とすれば、上の演算と同じ結果が入ります。
まだ、この段階では
レジスタに格納されただけで
LS上には格納されてはいないので注意してください。
PR