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

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU 即値設定命令

<<   作成日時 : 2010/12/30 02:26   >>

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

・即値設定命令
あるプロプライエタリな32bitRISC(過去の16bitCISC互換モードを持つ)は、1命令が4バイトの固定長だったが、
即値ロードのみ2命令分8バイトで、後半4バイト(32bit)の値をそのままレジスタに格納していた。ずるい。

SPARC V8(32bit)だとsethi命令+or即値命令の2命令で実現。
SPARC V9(64bit)だとワーク用のレジスタを使用して以下の6命令が必要だった。
・imm_hは64bit即値の上位32bit、imm_lは64bit即値の下位32bit

sethi %hi(imm_h),%l0
or %l0,%lo(imm_h),%l0
sllx %l0,32,%l0
sethi %hi(imm_l),%l1
or %l1,%lo(imm_l),%l1
or %l0,%l1,%l0

滅多に使わないとはいえこれは大変だ。

ではぼくのかんがえたさいきょうCPUではどうするか?
LEA命令を使えば、ロードストアユニットのアドレス計算用加算機を算術演算用のALUとは別に同時利用できる。(実装による)
lea [imm],GRd =即値ロードにそのまま使える
これをやるにはPOWERと同じようにアドレッシングモードのベースレジスタにGR0を指定した時ゼロとみなさなければならない。正確には
lea [GR0+imm],GRd
となる。プリフックス命令のロング即値と組み合わせれば32bitは一発で設定可能だ。そして即値設定の命令は特に用意しなくてもよくなる。
ぼくのかんがえたさいきょうCPU プリフィックス命令を考える

ということで、
・アドレッシングモードの [Base+indeX] のBaseレジスタがGR0の場合、Base=0とみなす
ことにする。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(1件)

タイトル (本文) ブログ名/日時
ぼくのかんがえたさいきょうCPU なぜポストフィックスではなくプレフィックス命令か
 ARMv8(AArch64)は4バイト長さ単位の可変長命令で、即値代入の場合に後続する8バイトが即値になる様だ。ではなぜ「ぼくのかんがえたさいきょうCPU」はこのように後続で指定せずプレフィックス命令にするのか? ...続きを見る
竹下世界塔の計算機よもやま話
2012/01/03 06:51

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




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