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

アクセスカウンタ

zoom RSS 32bitのAlphaコード?

<<   作成日時 : 2012/05/14 08:13   >>

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

 七誌の開発日記 Windows NT/Alpha用のクロスgccを読んで、え?ナンデ32bit?Alphaってピュア64bitアーキテクチャじゃなかったっけ?と思って調べなおしてみた。

 Alphaの加算、減算と乗算命令にはLongwordとQuadwordの形式がある。

ADDQ 64bit加算
SUBQ 64bit減算
MULQ 64bit乗算

これらは64bit同士での演算。/Vが付いた命令はオーバーフローでトラップを発生させる。


ADDL 32bit加算
SUBL 32bit減算
MULL 32bit減算

これらはLongword形式で、ソースに指定するレジスタの上位32bitを無視して計算し、結果は符号拡張して64bit幅に収める。
オーバーフローの検出は/Vが付いた命令形式でトラップを発生させ、演算結果が32bitの範囲内に収まるかどうかで判定する。

ハードウェアの実装としては、LongwordでもQuadwordでもそのまま演算器に渡し、Longwordの場合は結果のbit31を符号拡張してbit63〜32を塗りつぶしてしまえばよい。またオーバーフローの判定は32bit幅で行う。つまり結果を加工するだけ。

 ということで32bitの範囲内で演算する命令があった。Alphaデビュー当時はまだ32bitが主流だったこと、VAXも32bitなので互換性のために実装されていたものと思われる。

 また、ADD命令にはS4ADDL、S8ADDL、S4ADDQ、S8ADDQというソースレジスタの片方を×4、×8してから加算する命令がある。
これらはPA-RISCのSH2ADD/SH3ADD命令と同等。値を定数倍する時に使える。→PA-RISC1.1の演算命令(1)

 散発的に命令セットアーキテクチャを調べているがそろそろまとめんといかんなあ。元ボスの口癖は「表にしろ、表に」だったなあ。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

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

トラックバック(0件)

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

トラックバック用URL help


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

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




32bitのAlphaコード? 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる