即値の加算 即値の加算 即値の加算 即値の加算
処理 処理 処理
処理: RA← RA + (0x00.00 : K : IMM5)
アセンブラの構文 アセンブラの構文 アセンブラの構文
アセンブラの構文: ADDI %rA,IMM5 例例
例例: 前に前に前に前に PFX がないがないがないがない: ADDI %L5,6 ; add 6 to %L5 前に前に
前に前に PFX があるがあるがあるがある: PFX %hi(1000)
ADDI %g3,%lo(1000) ; ADD 1000 to %g3 説明説明
説明説明: 前に前に前に前に PFX がないがないがないがない:
レジスタ A に 5 ビットの即値を加算し、結果をレジスタ A に格納します。IMM5 の範囲は [0..31] です。
前に 前に 前に
前に PFX があるがあるがあるがある:
K レジスタ (11 ビット) の内容と IMM5 (5 ビット) が連結することで、即値の オ ペ ラ ン ド は 5 ビ ッ ト か ら 16 ビ ッ ト に 拡 張 さ れ ま す。 16 ビ ッ ト の 即 値 (K : IMM5) は、32 ビットにゼロ拡張され、レジスタ A に加算されます。
条件コード 条件コード 条件コード
条件コード: フラグ:
N: 結果ビット 31
V: 符号付算術オーバフロー
Z: 結果がゼロの場合に設定、それ以外の場合はクリア C: 加算の繰り上げ
命令のフォーマット 命令のフォーマット 命令のフォーマット
命令のフォーマット: Ri5 命令フィールド
命令フィールド 命令フィールド
命令フィールド: A = RA オペランドのレジスタ・インデックス IMM5 = 5 ビットの即値
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 0 0 1 IMM5 A
N V Z C
∆ ∆ ∆ ∆
2
命命命命令 令令令 セセセセッ ッッット トトト
AND
ビットごとの論理演算子 ビットごとの論理演算子 ビットごとの論理演算子 ビットごとの論理演算子 AND
処理 処理 処理
処理: 前に前に前に前に PFX がないがないがないがない: RA← RA & RB 前に
前に 前に
前に PFX があるがあるがあるがある:
RA
←
RA & (0x00.00 : K : IMM5) アセンブラの構文アセンブラの構文 アセンブラの構文
アセンブラの構文: 前に前に前に前に PFX がないがないがないがない: AND %rA,%rB 前に前に
前に前に PFX があるがあるがあるがある: PFX %hi(const) AND %rA,%lo(const) 例例
例例: 前に前に前に前に PFX がないがないがないがない:
AND %g0,%g1 ; %g0 gets %g1 & %g0 前に前に
前に前に PFX があるがあるがあるがある: PFX %hi(16383)
AND %g0,%lo(16383) ; AND %g0 with 16383 説明説明
説明説明: 前に前に前に前に PFX がないがないがないがない:
RA の個々のビットと RB の対応するビットで論理積を行ない、結果を RA に格 納します。
前に 前に 前に
前に PFX があるがあるがあるがある:
プリフィックスがあった場合、K レジスタ (11 ビット) の内容と IMM5 (5 ビッ
ト) を連結した即値の定数で、RB オペランドが置換されます。 この 16 ビット
の値 (32 ビットにゼロ拡張) は RA でビットごとに論理積が行なわれ、結果が元 の RA に書き込まれます。
条件コード 条件コード 条件コード
条件コード: フラグ:
N: 結果ビット 31
Z: 結果がゼロの場合に設定、それ以外の場合はクリア 命令のフォーマット
命令のフォーマット 命令のフォーマット
命令のフォーマット: RR、Ri5 命令フィールド
命令フィールド 命令フィールド
命令フィールド: A = RA オペランドのレジスタ・インデックス B = RB オペランドのレジスタ・インデックス IMM5 = 5 ビットの即値
前に 前に 前に
前に PFX (RR) がないがないがないがない:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 1 1 0 B A
前に 前に 前に
前に PFX (Ri5) があるがあるがあるがある:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
N V Z C
∆ - ∆
-ANDN
ビットごとの論理演算子 ビットごとの論理演算子 ビットごとの論理演算子
ビットごとの論理演算子 AND NOT
処理 処理 処理
処理: 前に前に前に前に PFX がないがないがないがない: RA← RA & ~RB PFX が先行が先行が先行が先行:
RA
←
RA & ~(0x00.00 : K : IMM5) アセンブラの構文アセンブラの構文 アセンブラの構文
アセンブラの構文: 前に前に前に前に PFX がないがないがないがない: ANDN %rA,%rB 前に
前に 前に
前に PFX があるがあるがあるがある: PFX %hi(const) ANDN %rA,%lo(const) 例
例 例
例: 前に前に前に前に PFX がないがないがないがない:
ANDN %g0,%g1 ; %g0 gets %g0 & ~%g1 前に PFX がある:
PFX %hi(16384)
ANDN %g0,%lo(16384) ; clear bit 14 of %g0 説明
説明 説明
説明: 前に前に前に前に PFX がないがないがないがない:
RA の個々のビットと RB の補集合にある対応ビットで論理積を行ない、その結 果を RA に格納します。
前に前に
前に前に PFX があるがあるがあるがある:
プリフィックスがあった場合、K レジスタ (11 ビット) の内容と IMM5 (5 ビッ
ト) を連結した即値の定数で、RB オペランドが置換されます。 この 16 ビット
値は 32 ビットにゼロ拡張されます。そしてビットごとに反転されて、RA でビッ トごとに論理積が行なわれます。 この結果は RA に書き込まれます。
条件コード 条件コード 条件コード
条件コード: フラグ:
N: 結果ビット 31
Z: 結果がゼロの場合に設定、それ以外の場合はクリア 命令のフォーマット
命令のフォーマット 命令のフォーマット
命令のフォーマット: RR、Ri5 命令フィールド
命令フィールド 命令フィールド
命令フィールド: A = オペランド RA のレジスタ・インデックス B = オペランド RB のレジスタ・インデックス IMM5 = 5 ビットの即値
前に前に
前に前に PFX (RR) がないがないがないがない:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 1 1 1 B A
前に 前に 前に
前に PFX (Ri5) があるがあるがあるがある:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 1 1 1 IMM5 A
N V Z C
∆ - ∆
-2
命命命命令 令令令 セセセセッ ッッット トトト
ASR
右算術シフト 右算術シフト 右算術シフト 右算術シフト
処理 処理 処理
処理: RA←(RA >> RB[4..0]), RA[31] で左から埋め込み アセンブラの構文
アセンブラの構文 アセンブラの構文
アセンブラの構文: ASR %rA,%rB 例例
例例: ASR %L3,%g0 ; %L3 を %g0 ビット右にシフト
説明説明
説明説明: RA の値を RB の値だけ算術的に右にシフトし、結果を RA に格納します。 RB の
ビット 31..5 は無視されます。 RB[4..0] の値が 31 の場合、RA は RA の元の符号 に応じてゼロまたは負の数になります。
条件コード 条件コード 条件コード
条件コード: フラグ: 影響なし
命令のフォーマット 命令のフォーマット 命令のフォーマット
命令のフォーマット: RR 命令フィールド
命令フィールド 命令フィールド
命令フィールド: A = RA オペランドのレジスタ・インデックス B = RB オペランドのレジスタ・インデックス
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 1 0 1 0 B A
N V Z C
- - -