MMIX
ドナルド・クヌース | |
ビット | 64ビット |
デザイン | RISC |
エンコード | Fixed |
ブランチ | Condition code |
エンディアン | ビッグエンディアン |
オープン |
|
レジスタ | |
うち32が | |
256 |
MMIX(エムミックス)は、ドナルド・クヌースがジョン・ヘネシー(MIPSプロセッサ
"MMIX" という
アーキテクチャ
[MMIX は
命令
[レジスタ
[MMIXチップには256
ローカルレジスタスタック
[ローカルレジスタスタックはレジスタ・ウィンドウに
専用 レジスタ
[MMIXには
- rB(g[0])
- ブートストラップレジスタ(トリップ)
- トリップ
時 、rB ← $255 および $255 ← rJ が行 われる。従 って rJ が汎用 レジスタにセーブされる。 - rD (g[1])
被 序 数 レジスタ符号 無 し整数 除算 で 128ビット被 序 数 の上位 64ビットとして使用 される。- rE (g[2])
- イプシロンレジスタ
浮動 小数点 数 のイプシロンに関 する比較 に使用 。- rH (g[3])
乗算 上位 レジスタ符号 無 し整数 乗算 で 128ビットの積 の上位 64ビットを格納 。- rJ (g[4])
- リターンジャンプレジスタ
- PUSH
命令 で次 の命令 アドレスを格納 し、後 に POP命令 で戻 る際 に使用 する。 - rM (g[5])
多重 化 マスクレジスタ- MUX
命令 で使用 ($X ← ($Y & rM)|($Z & ~rM)) - rR (g[6])
剰余 レジスタ整数 除算 で剰余 を格納 。- rBB (g[7])
- ブートストラップレジスタ(トラップ)
- トラップ
時 、rBB ← $255 および $255 ← rJ が行 われる。従 って rJ が汎用 レジスタにセーブされる。 - rC (g[8])
- サイクルカウンタ
- サイクル
毎 にインクリメントされる。 - rN (g[9])
- シリアル
番号 - プロセッサの
識別 番号 - rO (g[10])
- レジスタスタックオフセット
- レジスタスタック
実装 用 - rS (g[11])
- レジスタスタックポインタ
- レジスタスタック
実装 用 - rI (g[12])
- インターバルカウンタ
- サイクル
毎 にデクリメントされる。ゼロになると割 り込 みを発生 。 - rT (g[13])
- トラップアドレスレジスタ
- トラップハンドラのアドレス
- rTT (g[14])
動的 トラップアドレスレジスタ外部 割込 み時 のトラップハンドラアドレス- rK (g[15])
割 り込 みマスクレジスタ特定 割 り込 みのイネーブルとディセーブル- rQ (g[16])
割 り込 み要求 レジスタ発生 した割 り込 みの記録 - rU (g[17])
使用 量 カウンタ実行 命令 数 のカウント- rV (g[18])
仮想 変換 レジスタ仮想 物理 アドレス変換 のためのレジスタ。セグメントのサイズと大 きさ、ページテーブルの位置 と仮想 空間 番号 などを保持 。- rG (g[19])
- グローバル閾値レジスタ
- $(rG)から R255までをグローバルレジスタとして
使用 。 - rL (g[20])
- ローカル閾値レジスタ
- $0から$(rL-1)までをローカルレジスタとして
使用 。 - rA (g[21])
数値 演算 状態 レジスタ- オーバフローやゼロ
除算 などの算術 例外 の記録 およびイネーブル/ディセーブル設定 。 - rF (g[22])
- フェイルアドレスレジスタ
障害 を発生 した命令 のアドレスを格納 。- rP (g[23])
予測 レジスタ- コンペア・アンド・スワップ
命令 で使用 。 - rW (g[24])
割 り込 み箇所 レジスタ(トリップ)- トリップ
時 、次 の命令 のアドレスを保持 。 - rX (g[25])
実行 レジスタ(トリップ)- トリップ
時 、現在 の命令 そのものを保持 。 - rY (g[26])
- Yオペランド(トリップ)
- トリップ
時 、現在 の命令 のYオペランドを保持 。 - rZ (g[27])
- Zオペランド(トリップ)
- トリップ
時 、現在 の命令 のZオペランドを保持 。 - rWW (g[28])
割 り込 み箇所 レジスタ(トラップ)- トラップ
時 、次 の命令 のアドレスを保持 。 - rXX (g[29])
実行 レジスタ(トラップ)- トラップ
時 、現在 の命令 そのものを保持 。 - rYY (g[30])
- Yオペランド(トラップ)
- トラップ
時 、現在 の命令 のYオペランドを保持 。 - rZZ (g[31])
- Zオペランド(トラップ)
- トラップ
時 、現在 の命令 のZオペランドを保持 。
トリップとはユーザーレベルの
参考 文献
[- Knuth, Donald E. (1999). MMIXware: A RISC Computer for the Third Millennium. Heidelberg: Springer-Verlag. ISBN 978-3-540-66938-8 (errata).
- ドナルド・クヌース
著 、滝沢 徹 訳 『MMIXware第 三 千年紀 のためのRISC コンピュータ』エスアイビー・アクセス、府中 (東京 都 )、2001年 12月。ISBN 4434012398。 - Knuth, Donald E.
有澤 誠 他 訳 (2006). The Art of Computer Programming Volume 1, Fascicle 1 MMIX - A RISC Computer for the New Millennium. アスキー. ISBN 4-7561-4712-7
外部 リンク
[- Donald Knuth's MMIX page — TAoCP でアセンブリ
言語 を使 う理由 とMMIX入門 - Donald Knuth's MMIX news page — CWEB で
書 かれたオープンソースのシミュレータ、プログラマーマニュアル、プログラム例 など