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

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU ありあまるレジスタを活用するキュー操作命令

<<   作成日時 : 2010/01/20 19:39   >>

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

 最低で64本、最大で256本あるレジスタをどのように活用しようか。双方向リストが扱えたら、と考えた。

 前回の間接代入命令IND(indirect)があれば、単方向リストは構成できる。双方向リスト(今後キューと呼ぶ)は次のセル(レジスタ)と前のセルを参照できなければならない。セルの挿入、削除操作が必要だ。とてもCISCっぽい機能に思えるが、考えてみたらそうでもなかった。

 以下のようなセルをレジスタ上で実現する。R1[7:0]の8bitは次のセルへのポインタ(レジスタ番号)、R1[15:8]の8bitは前のセルへのポインタとなる。RpはR1の前のセル、RnはR2の次のセルを示す。上位の残りbitはデータをあらわす。ゼロレジスタはnilでありキューの終点となる。通常のレジスタの内容をall'0'にしても同様だが、扱いによってはLISPのnilと()のような違いが出せる。が、どう役に立つかはわからない。

R1:[data1][Rp][R2]
R2:[data2][R1][Rn]

 R1とR2の間に R3[data3][?][?]を挿入すると、以下の様になる。

R1:[data1][Rp][R3]
R3:[data3][R1][R2]
R2:[data2][R3][Rn]

■キュー操作命令
・QSETL GRs1,GRs2,GRd / QSETL GRS1,#imm,GRd
 GRs1の[7:0]をGRs2のレジスタ番号または即値で置き換え、GRdに代入する。
・QSETH GRs1,GRs2,GRd / QSETH GRS1,#imm,GRd
 GRs1の[15:8]をGRs2のレジスタ番号または即値で置き換え、GRdに代入する。

 さきほどのキュー挿入は以下の命令列になる。
(GR3のデータをセットし、ライフフラグを立てる)
QSETH GR3,GR1,GR3
QSETL GR3,GR2,GR3
QSETL GR1,GR3,GR1
QSETH GR2,GR3,GR2

 キューからのR3の削除は以下の命令列になる。
QSETL GR1,GR2,GR1
QSETH GR2,GR1,GR2
(GR3のライフフラグを落とす)

 キューの次方向/前方向のデータ参照にはIND命令を使う。

R3の次、R2を参照するには
IND GR0,GR3,GRwork

R3の前、R1を参照するには
SRL GR3,#8,GRtmp - 右8bitシフト
IND GR0,GRtmp,GRwork

参考:TRON仕様チップ活用法 Gmicroのすべて 第七章 キュー操作命令

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(1件)

タイトル (本文) ブログ名/日時
ぼくのかんがえたさいきょうCPU ローカルレジスタ
 GR0〜GR63を定義しているが64個もの汎用レジスタ、どう使うか? ...続きを見る
竹下世界塔の計算機よもやま話
2012/02/05 18:32

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




ぼくのかんがえたさいきょうCPU ありあまるレジスタを活用するキュー操作命令 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる