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

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU シフト命令に追加

<<   作成日時 : 2009/11/27 22:12   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

 汎用レジスタは最大256本、ビット幅は最大256bitと決めた。これらは8ビットで位置やシフト量を表すことが出来る。
SLL,SRL,SRAは一般的なシフト命令だが、GRs2(または即値)の下8bitだけ見ればGRs1のシフト量を決められる。これらの命令は上位24bitを無視すればよい。
最小のレジスタ幅は32bitと決めた。そうするとまだシフトなどの指定に使えるのが24bit余っているわけだ。

IA-64の以下の命令は実現することができる。
 EXTR 64bit右シフト抽出(算術)抽出結果の左側は符号拡張
 EXTR.U 64bit右シフト抽出(論理)抽出結果の左側はゼロ
 DEP 64bit左シフト格納 指定した範囲外はレジスタの元の値を残す
 DEP.Z 64bit左シフト格納 指定した範囲外はゼロで埋める

・EXTRA GRs1,GRs2,GRd 算術右シフト抽出
・EXTR GRs1,GRs2,GRd 論理右シフト抽出
 →GRs2[15:8]開始ビット GRs2[7:0]終了ビット この範囲のGRs1の値を右詰めでGRdにセット。
 EXTRA命令の場合はGRs2[15:8]で指定した開始ビットの値を符号拡張。ただしSEX(Sign Extend)命令があるのでこれを使えばEXTRA命令は不要。
・DEPZ GRs1,GRs2,GRd 左シフト格納 ゼロパディング
 →GRs2[15:8]開始ビット GRs2[7:0]終了ビット この範囲のGRs1の値を抜き出してGRdにセット。範囲外のGRdのビットは0にする。
いずれもGRs2[15:8]開始ビットの位置が終了ビット位置よりも小さかったりレジスタの範囲外だったりした場合はMSBと同じ値とみなす。GRs1[7:0]がレジスタの範囲外だった場合はMSBと同じ値とみなす。

 DEP命令は無理だったか。レジスタが足らない。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

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




ぼくのかんがえたさいきょうCPU シフト命令に追加 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる