必要そうなコマンドを記述していきます。
とりあえず、明日の朝までに、第一弾を書きますので、お楽しみに。
Y.Sawa, Sat Nov 6 23:16:19 20041.レジスタ同士の演算
1)
li r3, 0
Cで言うとr3 = 0;
第一引数に、定数を代入する。
2)
mr r3, r4
Cで言うと、r3 = r4;
第一引数に、第二引数の値をコピーする。
3)
add r3, r4, r5
Cで言うと、r3 = r4 + r5;
第一引数に、第二引数と第三引数の和を代入する。
4)
addi r3, r4, 1
Cで言うと、r3 = r4 + 1
第一引数に、第二引数と定数の和を代入する。
2.メモリからのロード演算
1)
lwz r4, 4(r3)
Cで言うと、r4 = *(r3 + 4);
2)
lbzx r3, r4, r5
Cで言うと、r3 = *(r4 + r5)
この二つがあれば、まあ大丈夫・・・のはず。
定数メモリからのロード命令もあるはずだけど、見つけるのめんどい。
3.メモリへのストア演算
1)
stb r3, 4(r4)
Cでいうと、*(r4 + 4) = r3
これが分かればとりあえず書けると思う。
当然これも、*(r4 + r5) = r3みたいな演算があるはずだけど、
分からんかった。
やりたい場合は、addと組み合わせればとりあえずは出来る。
4.比較演算
1)
cmp cr7, r3, r4
Cで言うと、cr7 = (r3 == r4);
レジスタ同士の比較
2)
cmpi cr7, r3, 0
Cで言うと、cr7 = (r3 == 0);
定数との比較
3)
cmpl cr7, r3, r4
Cで言うと、cr7 = (*r3 == *r4);
ポインタ先比較。
5.ジャンプ命令
1)
b LABEL
Cでいうと、goto LABEL;
2)
beq cr7, LABEL
cr7に等しいという内容があれば goto LABEL
3)
bne cr7, LABEL
cr7に等しくないと言う内容があれば、goto LABEL
Y.Sawa, Sun Nov 7 02:00:20 2004ひとまず、これだけあれば、一回目の課題は出来ます。僕は、出来ました。
もちろん、あまり詳しく解説されていない部分に関しては、これ以外のコードを
使いますが、レジュメの丸写しで問題ないでしょう。
Y.Sawa, Sun Nov 7 02:02:20 20043.はstbxですね。
stbx r3,r4,r5
*(r4 + r5) = r3
後藤, Sun Nov 7 07:59:32 2004フォローサンクスです。
Y.Sawa, Sun Nov 7 13:58:24 2004少し補足すると(とか言いつつ間違ったこと書いてたらごめんなさい...)、
stw、stb はどっちもメモリへの書き込みですが、前者は1ワード=4バイトを
書き(store word)、後者は1バイトを書きます(store byte)。lwz、lbz も
同様。(ちなみに1ワード=4バイトってのは普遍的な話じゃなくて、そうでな
い
プロセッサもあると思います。)
あと、cmpl はメモリ内容の比較ではなく、引数の unsigned な整数としての比
較を
します(compare logical)。ただの cmp は signed な整数として比較します。
ところで、比較のときにレジュメではいつも cr7 を使ってますが、cr0 って
使ってはいけなかったりするんでしょうか? マニュアル(?)には「crN を省略
すると cr0 を指定したと見なす」みたいな記述があって(Appendix F.3 の冒頭
)、
実際
cmpwi r3,0 ← cmpi cr7,r3,0 の代わり。
beq LABEL ← beq cr7,LABEL の代わり。
みたいにしても動くのですが…。
kosak, Tue Nov 9 00:37:43 2004大した情報ではないですが、PowerPCをWindows上でエミュレートしてくれるPear
PCなるソフトがありまして、それにAppleのサイトに落ちているDarwinというフ
リーのOSをインストールすれば、Windowsのパソコンで課題をやることができま
す。
一応ご報告までに。
takayama, Thu Nov 18 01:43:03 2004小田君@理物からシケプリを頂いたのでアップします.
添付ファイル松本, Wed Jan 19 22:05:24 2005アップしておきます。間違いがあったらフォローしておいてください。
添付ファイルoda, Wed Jan 19 22:13:52 2005おっとぶつかった。
では、*駒場初脱出*目指して頑張りましょう。
Oda, Wed Jan 19 22:18:52 2005