« 命令セットアーキテクチャを考える2 (レジスタ) | トップページ | 命令セットアーキテクチャを考える4 (命令コード) »

2014/06/10

命令セットアーキテクチャを考える3 (特殊レジスタ)

# シリーズものになる予定なのに、タイトルが馬鹿っぽいので変更しました。

命令そのものに入る前に、どうしても必要になる特殊レジスタを定義しておきます。


[Condition Code Register(Read Only)]
・命令の実行結果によってセットされる。
・命令によっては変化しない(load/store/branch命令など)
・整数演算・論理演算・ビット演算結果用(CCR0)と浮動小数点演算結果用(CCR1)の2セットのCCRを持つ
・条件付き分岐命令で参照される
・コンディションコードをリセットする命令はないので、どうしても変更したい場合は、適切な命令(R0+R0→R0とか)を実行する

[CCR0]
bit5: Carry/Borrow(c) : Carry
bit4: Overflow(o) : Overflow
bit3: Underflow(u) : Underflow
bit2: positive/plus(p) : Positive
bit1: zero(z) : Zero
bit0: negative/minus(m) : Minus

# carry/borrowフラグとoverflowフラグを分離した。(2018/03/21)

[CCR1]
bit7: 非正規化数(s) : Subnormal number
bit6: 無限大(i) : Infinite number
bit5: NaN(n) : Not a number
bit4: Overflow : Overflow
bit3: Underflow : Underflow
bit2: positive/plus(p) : Positive
bit1: zero(z) : Zero
bit0: negative/minus(m) : Minus

[Rounding Mode Register(Read/Write)]
・浮動小数点演算の丸め処理のモードを指定する
・特権モードでのみ設定可能、ユーザプログラムからは読み取りのみ可能。

bit5: flash to zero(fz) : 非正規化数を0に丸める
bit4: zero(zr) : 0方向丸め
bit3: negative infinite(in) : -無限大方向丸め
bit2: positive infinite(ip) : +無限大方向丸め
bit1: zero neiborhood(nz) : 最近接丸め(0方向)
bit0: even neiborhood(ne) : 最近接丸め(偶数方向)

・bit0~bit4はいずれか一つのみ設定(排他的)。bit5はbit0~4と独立に設定可能。

[Exception Interruption Inhibit Mode Register(Read/Write)]
・例外割り込み禁止フラグ
・特権モードでのみ設定可能、ユーザプログラムからは読み取りのみ可能。

bit3: fp invalid operation : 演算結果はNaN
bit2: floating zero divide : 演算結果は無限大
bit1: integer zero divide : 演算結果は無限大
bit0: address boundary : 0方向に境界整列する

[Exception code register(Read Only)]
・例外発生フラグ

76543210
bit5: invalid operation excep(iv) : 無効な演算例外(負値の二乗根の逆数など)
bit4: zero divide exception(zd) : 0除算例外(0の平方根の逆数も含む)
bit3: mem protect exception(mp) : 記憶保護例外
bit2: boundary exception(bd) : アドレス境界例外
bit1: address exception(ad) : アドレス例外(実装メモリがないなど)
bit0: operation exception(op) : 命令例外

|

« 命令セットアーキテクチャを考える2 (レジスタ) | トップページ | 命令セットアーキテクチャを考える4 (命令コード) »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 命令セットアーキテクチャを考える3 (特殊レジスタ):

« 命令セットアーキテクチャを考える2 (レジスタ) | トップページ | 命令セットアーキテクチャを考える4 (命令コード) »