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

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU 十進演算命令続き

<<   作成日時 : 2009/10/23 04:11   >>

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

 なんとなくz/Architecture Principles of Operationの十進演算の所を見ていたらパック/アンパック形式変換にUnicode対応の命令があるじゃないですか。
7.5.100 PACK UNICODE,7.5.143 UNPACK UNICODE
たしかに最近のOSは内部でUnicode(UTF-16)を使っているらしいのでこのような命令があるのだろう。前回の続きとして検討してみた。

BCDPACK GRs1,GRs2,GRd
 8ビット文字列から4ビットBCD数に変換する。
 1バイト単位で上位4ビットが間引かれ、右詰めで格納される。格納先のレジスタの上位半分はGRs2の上位半分。
 結果を格納したレジスタについてデータのチェックが行われる。最下位4ビット(符号)以外の桁が数値0-9でない場合だとオーバーフローフラグが立つ。
BCDUNPK GRs1,GRs2,GRd
 レジスタの下位半分について、4ビットBCD数から8ビット文字列に変換する。1バイト単位で変換され、上位4ビットにはGRs2.bcd9で設定した4ビットの値(デフォルトで0x3)が挿入される。
 上位のBCD数で0が連続している場合は、上位4ビットにはGRs2.bcdzで設定した4ビットの値(デフォルトで0x2)が挿入される。ゼロ・サプレス動作。
 最下位がa,C,e,fの符号だった場合はGRs2.bcdp(デフォルトで0x2b "+")に、b,Dだった場合はGRs2.bcdm(デフォルトで0x2d "-")に変換される。

・BCDUNPKで使用する汎用レジスタ ASCII符号への変換を想定しているが、書き換えればEBCDICにも対応できる。
GRs2.bcdp GRs2[31:24] 正の符号ASCII文字 8bit 初期値0x2b ("+")
GRs2.bcdm GRs2[23:16] 負の符号ASCII文字 8bit 初期値0x2d ("-")
GRs2.bcd9 GRs2[15:12] 数値変換 4bit 初期値0x3
GRs2[11:8] 0000
GRs2.bcdz GRs2[7:4] ゼロサプレス 4bit 初期値0x2
GRs2[3:0] 0000
※GRs2.bcdzがGRs2.bcd9と同じ値ならばゼロサプレス動作はしない。
ASCII文字で扱う場合はGRs2=0x2b2d3020
EBCDIC文字で扱う場合はGRs2=0x4b60f040

※BCDUNPKZ命令は廃止

以下、Unicode拡張対応
BCDPACKU GRs1,GRs2,GRd
 16ビット文字列から4ビットBCD数に変換する。
 2バイト単位で上位12ビットが間引かれ、右詰めで格納される。格納先のレジスタの上位3分の4はGRs2の上位3分の4。
 結果を格納したレジスタについてデータのチェックが行われる。最下位4ビット(符号)以外の桁が数値0-9でない場合だとオーバーフローフラグが立つ。
BCDUNPKU GRs1,GRs2,GRd
 レジスタの下位半分について、4ビットBCD数から16ビット文字列に変換する。2バイト単位で変換され、上位12ビットにはGRs2.bcd9uで設定した12ビットの値(デフォルトで0x003)が挿入される。
 上位のBCD数で0が連続している場合は、上位4ビットにはGRs2.bcdzuで設定した4ビットの値(デフォルトで0x002)が挿入される。ゼロ・サプレス動作。
 符号の変換はせず、12ビットのゼロ(0x000)が挿入される。
 →符号はプログラムで処理。変換を指示する(GRs2)レジスタ長については32ビットを越えたくなかったため。
GRs2.bcd9u GRs2[32:20] 数値変換 12bit 初期値0x003
GRs2[19:16] 0000
GRs2.bcdz GRs2[15:4] ゼロサプレス 12bit 初期値0x002
GRs2[3:0] 0000

 どうもすっきりしない。SIMD系命令で、1バイトおきに1バイトを挿入する命令と削除する命令を用意すれば、BCDPACKU,BCDUNPKUは要らなくなる。SIMD系命令を検討するときに考慮する。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

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




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