nanoMIPS 調査その3 32bit長命令の特別な例と注目の命令

 nanoMIPSの命令調査、これで終わりです。(金など積まれたら考えます)

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

・32bit長命令の特別な例
 メモリ操作でよく使うソースレジスタを固定してその分即値フィールドをかせいでいる。


ADDIU[GP.B] rt=r28+u[17:0]
ADDIU[GP.W] rt=r28+u[20:2]_00

r28の操作


ADDIU[NEG] rt=rs-u[11:0]

減算に関しては即値の減算(SUBI相当)がないのでその代わり


LB[GP] / LBU[GP] / SB[GP] ( r28 + u[17:0] )
LB[S9] / LBU[S9] / SB[S9] ( rs ± s[8:0] )
LH[GP] / LHU[GP] / SH[GP] ( r28 + u[17:1]_0 )
LH[S9] / LHU[S9] / SH[S9] ( rs ± s[8:0] )
LW[GP] / SW[GP] ( r28 + u[20:2]_00 )
LW[S9] / SW[S9] ( rs ± s[8:0] )
PREF[S9] ( rs ± s[8:0] ) ; プリフェッチ
SYNCI[S9] ( rs ± s[8:0] ) ; 命令キャッシュの同期化

これらはアドレッシングモードでr28指定と任意のレジスタに対し符号付きの加算


・注目の命令

CLO Count Leading One
CLZ Count Leading Zero
※popc命令はない


CRC32B/CRC32H/CRC32W
CRC32CB/CRC32CH/CRC32CW

バイト/ハーフワード/ワード単位のCRC

LWM/SWM

ワード単位でレジスタを連続してロード/ストア


ROTX bitの入れ替え

操作対象の32bitを以下の並びとすると:
abcdefgh_ijklmnop_qrstvwx_yz012345

以下、仕様書より抜き出し。カッコ内はアセンブラのalias。

543210zy_xwvutsrq_ponmlkji_hgfedcba ROTX rt,rs,31,0 (BITREVW)
ponmlkji_hgfedcba_543210zy_xwvutsrq ROTX rt,rs,15,16 (BITREVH)
hgfedcba_ponmlkji_xwvutsrq_543210zy ROTX rt,rs,7,8,1 (BITREVB)
yz012345_qrstuvwx_ijklmnop_abcdefgh ROTX rt,rs,24,8 (BYTEREVW)
ijklmnop_abcdefgh_yz012345_qrstuvwx ROTX rt,rs,8,24 (BYTEREVH)


防錆潤滑剤 CRC 6-66防錆潤滑剤 CRC 6-66

KURE
売り上げランキング : 919821

Amazonで詳しく見る
by G-Tools


ブログ気持玉

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

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

→ログインへ

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

気持玉数 : 0

この記事へのコメント

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