nanoMIPS 調査その2 16bit長命令

 nanoMIPSの16bit長命令について抜き出して調べた。

前回:nanoMIPS 調査その1 48bit長命令
nanoMIPS調査(Googleスプレッドシート)

32bit長の命令から16bit長にするためにはbit数を削減するためにいくつかの制限がある。
・指定できるレジスタ数 32本(5bit)→8本(3bit)、16本(4bit)
・汎用レジスタのうちよく使うものを指定(r28,r29,r30,r31)
・2オペランド命令フォーマット( a=a+bのような形式 )
・相対分岐の一部は先の方向のみ
・特別な即値 ある値のときのみ特別なパターン

 指定できるレジスタについては0から順にという割当ではないかもしれないが、命令セットの仕様書だけではわからなかった。他のを見る必要がある。また、r28,r29等はハードとしての汎用レジスタとしては動作に違いはないが、ソフトウェア側の約束でスタックポインタとして使ったりするのでそれに命令を合わせている。

 以下はカテゴリ別の16bit長命令。ここにあるものはよく使われると判断されたもの。

・演算命令

ADDIU[R1.SP] rt3=r29+即値u[7:2]_00 ※32bitポインタの加算
ADDIU[R2] rt3=rs3+即値u[4:2]_00
ADDIU[RS5] rt=rt±s[3:0] ※即値は符号拡張
ADDU[16] rd3=rs3+rt3
ADDU[4x4] rt4=rt4+rs4
SUBU[16] rd3=rs3-rt3
MUL[4x4] rt4=rt4×rs4

算術命令の使用頻度は 加減算>乗算>>除算なので妥当。


・論理演算/シフト命令

AND[16] rt3=rt3 & rs3
ANDI[16] rt3=rt3 & eu4bit / ただしeu=12のとき0x00ff、eu=13のとき0xffff
NOT[16] rt3= ~rs3
OR[16] rt3=rt3 | rs3
XOR[16] rt3=rt3 ^ rs3
SLL[16] rt3=rs3 << 1〜8bit
SRL[16] rt3=rs3 >> 1〜8bit

ANDのみ特別な即値指定あり。NORは16bit命令がない。算術右シフトもない。

・コピー命令

MOVEP[16] rs4→rd2 を2ペア
MOVEP[REV] rd2→rs4 を2ペア

16bit長のADD命令を使うよりも良いがレジスタ番号に制限あり。


・分岐命令

BC[16] 無条件 s[10:1]_0 相対分岐
BEQC[16] if rt3==rs3 、pc+u[4:1]_0 先の方へ相対分岐
BEQZC[16] if rt3==0、s[7:1]_0 相対分岐
BNEC[16] if rt3!=rs3 、pc+u[4:1]_0 先の方へ相対分岐
BNEZC[16] if rt3!=0、s[7:1]_0 相対分岐

大小の比較はない。0か非0か、=か≠か。


・サブルーチンコール関連

BALC[16] r31=次命令アドレス、s[10:1]_0 相対分岐JALRC[16] r31に次命令番地を入れてrtが示す番地へジャンプ
JRC[16] rtが示す番地へジャンプ
RESTORE.JRC[16] r30またはr31指定、r29の示す番地から複数のレジスタの値をリストアしてジャンプ
SAVE[16] r30またはr31指定、r29の示す番地から複数のレジスタの値を保存


・ロードストア命令

LI[16] rt3=即値 eu7bit、eu=127のとき-1(0xffff)

LB[16]/LBU[16] rt3=( rs3+u[1:0] )
SB[16] ( rs3+u[1:0] )=rtz3

LH[16]/LHU[16] rt3=( rs3+u[2:1]_0 )
SH[16] ( rs3+u[2:1]_0 )=rtz3

LW[16] rt3=( rs3+u[5:2]_00 )
SW[16] ( rs3+u[5:2]_00 )=rtz3

LW[4x4] rt4=( rs4+u[3:2]_00 )
SW[4x4] ( rs4+u[3:2]_00 )=rtz4

LW[GP16] rt3=( r28+u[8:2]_00 )
SW[GP16] ( r28+u[8:2]_00 )=rtz3

LW[SP] rt=( r29+u[6:2]_00 )
SW[SP] ( r29+u[6:2]_00 )=rt

LWXS[16] rd3=( rt3 ± 4×rs3 )


・その他の命令
SYSCALL[16]
BREAK[16]
SDBBP[16]
NOP[16]

これらは16bit長命令が存在するのでそれに合わせて必要になったもの。

つづく


メガドライブパーフェクトカタログ (G-MOOK)メガドライブパーフェクトカタログ (G-MOOK)
前田 尋之

ジーウォーク 2018-05-29
売り上げランキング : 934

Amazonで詳しく見る
by G-Tools

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック