竹下世界塔の計算機よもやま話

アクセスカウンタ

zoom RSS シフト命令の調査

<<   作成日時 : 2009/10/31 06:36   >>

なるほど(納得、参考になった、ヘー) ブログ気持玉 1 / トラックバック 0 / コメント 0

基本 論理左右シフトはシフトした後に"0"を埋める。算術右シフトは符号フラグをシフト量分引き伸ばす。
組み込み系やCISCにはローテート命令があるものが多い。

 元々32bitアーキが64bitアーキになったもの(MIPS,SPARC,PA-RISC)は拡張されている。一覧を作ってみてわかったのだが、即値をニーモニックに含めるかどうかで命令数が変わってくる。私は読みづらくなると感じた。
 特に複雑なのはPowerPCである。シフト命令は単純だが、ローテート命令は回転後にあるビットで仕切って左側1,右側0の値でANDしたりと複雑なものが多く、今のところどんな用途なのか理解できないでいる。とりあえずメモした。

□Alpha (64bit) 必要最小限。
SLL 論理左シフト
SRL 論理右シフト
SRA 算術右シフト

□SPARC (V8,V9)
SLL 論理左32bitシフト(V8,V9)
SRL 論理右32bitシフト(V8,V9)
SRA 算術右32bitシフト(V8,V9)
SLLX 論理左64bitシフト(V9)
SRLX 論理64bit右シフト(V9)
SRAX 算術64bit右シフト(V9)

□MIPS (MIPS I,II,III) 32bit→64bit拡張があんまりスマートではない
SLL 論理左32bitシフト シフト量は即値(I,II)
SRL 論理右32bitシフト シフト量は即値(I,II)
SRA 算術右32bitシフト シフト量は即値(I,II)
SLLV 論理左32bitシフト シフト量はレジスタ(I,II)
SRLV 論理右32bitシフト シフト量はレジスタ(I,II)
SRAV 算術右32bitシフト シフト量はレジスタ(I,II)
DSLL 論理左64bitシフト シフト量は即値(III)
DSRL 論理右64bitシフト シフト量は即値(III)
DSRA 算術右64bitシフト シフト量は即値(III)
DSLLV 論理左64bitシフト シフト量はレジスタ(III)
DSRLV 論理右64bitシフト シフト量はレジスタ(III)
DSRAV 算術右64bitシフト シフト量はレジスタ(III)
DSLL32 論理左64bitシフト シフト量は即値+32(III)
DSRL32 論理右64bitシフト シフト量は即値+32(III)
DSRA32 算術右64bitシフト シフト量は即値+32(III)

□ARM(32bit) ほとんどの命令でソースに対して同時にシフトができる。
LSL 論理左シフト
LSR 論理右シフト
ASL 算術左シフト=LSL
ASR 算術右シフト
ROR 右回転
RRX Cフラグを含んだ右回転

□PA-RISC2.0(64bit/32bit) 即値指定は省いた(DEPDIなど)
EXTRD.S 64bit右シフト抽出(算術)範囲指定して右詰め 抽出結果の左側は符号拡張
EXTRD.U 64bit右シフト抽出(論理)範囲指定して右詰め 抽出結果の左側はゼロ
EXTRW.S 32bit右シフト抽出(算術)範囲指定して右詰め 抽出結果の左側は符号拡張
EXTRW.U 32bit右シフト抽出(論理)範囲指定して右詰め 抽出結果の左側はゼロ
DEPD 64bit左シフト格納 指定した範囲外はレジスタの元の値を残す
DEPD.Z 64bit左シフト格納 指定した範囲外はゼロで埋める
DEPW 32bit左シフト格納 指定した範囲外はレジスタの元の値を残す
DEPW.Z 32bit左シフト格納 指定した範囲外はゼロで埋める
SHLADD 左シフト加算 (単なる論理左シフトも兼用のようだ)
SHRPD 右シフトペアダブルワード
SHRPW 右シフトペアワード

□IA-64 = PA-RISC2.0とほぼ同じ
SHR 右シフト(算術)
SHR.U 右シフト符号なし(論理)
SHL 左シフト
SHLADD 左シフト加算
EXTR 64bit右シフト抽出(算術)抽出結果の左側は符号拡張
EXTR.U 64bit右シフト抽出(論理)抽出結果の左側はゼロ
DEP 64bit左シフト格納 指定した範囲外はレジスタの元の値を残す
DEP.Z 64bit左シフト格納 指定した範囲外はゼロで埋める
SHRP 右シフトペア(128bit)

□PowerPC (64bit/32bit) ローテート命令が特に複雑
sld ダブルワードの左シフト
slw ワードの左シフト
srd ダブルワードの右シフト
srw ワードの右シフト
srad ダブルワードの算術右シフト
sraw ワードの算術右シフト
(即値指定は省略)

ローテート関係の命令 命令一覧のみ 動作までは未調査
rldicl ダブルワードの左ローテートおよび左クリア
拡張ニーモニック(exirdi)
rldicr ダブルワードの左ローテートおよび右クリア
拡張ニーモニック(extldi,sldi,clrrdi)
rldic ダブルワードの左ローテートおよびクリア
拡張ニーモニック(clrsldi)
rlwinm ワードの左ローテートおよびマスク付きAND
拡張ニーモニック(extlwi,srwi,clrrwi)
rldcl ダブルワードの左ローテートおよび左クリア
拡張ニーモニック(rotld)
rldcr ダブルワードの左ローテートおよび右クリア
拡張ニーモニック なし
rlwnm ワードの左ローテートおよびマスク付きAND
拡張ニーモニック(rotlw)
rldimi ダブルワードのイミディエイト左ローテートおよびマスク挿入
拡張ニーモニック(insrdi)
rlwimi ワードのイミディエイト左ローテートおよびマスク挿入
拡張ニーモニック(inslwi)

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 1
なるほど(納得、参考になった、ヘー)

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
URL(任意)
本 文




シフト命令の調査 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる