FILL8
メモリから 32 ビット・データをロード ビット・データをロード ビット・データをロード ビット・データをロード
メモリから メモリから
メモリから 32 ビット・データをロード ビット・データをロード ビット・データをロード ビット・データをロード
処理 処理 処理
処理: 前に前に前に前に PFX がないがないがないがない: RA← Mem32[align32(RB)]
前に 前に 前に
前に PFX があるがあるがあるがある:
RA← Mem32[align32(RB +σ(K) x 4))]
アセンブラの構文 アセンブラの構文 アセンブラの構文
アセンブラの構文: LD %rA,[%rB]
例 例 例
例: 前に前に前に前に PFX がないがないがないがない:
LD %g0,[%i3] ; [%i3] のワードを %g0 にロード 前に
前に 前に
前に PFX があるがあるがあるがある:
PFX 7 ; ワード・オフセット
LD %g0,[%i3] ; [%i3+28] のワードを %g0 にロード 説明
説明 説明
説明: 前に前に前に前に PFX がないがないがないがない:
メモリから RA に 32 ビットのデータ値をロードします。 データは常にRB の ビット 31..2 で指定するワード・アラインされたアドレスから読み込まれます (RB の 2 つの LSB は無視されます)。
前に 前に 前に
前に PFX があるがあるがあるがある:
K の値は符号拡張され、ワード・スケールされた符号付オフセットとして使用 されます。 このオフセットは RB のベース・アドレス (ビット 1..0 は無視) に加 算され、最終的にワード・アラインされたアドレスからデータが読み込まれま す。
条件コード 条件コード 条件コード
条件コード: フラグ: 影響なし
命令のフォーマット 命令のフォーマット 命令のフォーマット
命令のフォーマット: RR 命令フィールド
命令フィールド 命令フィールド
命令フィールド: A = オペランド RA のレジスタ・インデックス B = オペランド RB のレジスタ・インデックス
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 1 0 1 1 0 B A
N V Z C
- - -
-2
命命命命令 令令令 セセセセッ ッッット トトト
LDP
メモリから メモリから メモリから
メモリから 32 ビット・データをロード ビット・データをロード ビット・データをロード ビット・データをロード ( ポインタ・アドレッシング・モード ポインタ・アドレッシング・モード ポインタ・アドレッシング・モード ポインタ・アドレッシング・モード
)処理 処理 処理
処理: 前に前に前に前に PFX がないがないがないがない:
RA←Mem32[align32(RP + (IMM5 x 4))]
前に 前に 前に
前に PFX があるがあるがあるがある:
RA← Mem32[align32(RP + (σ(K : IMM5) x 4))]
アセンブラの構文 アセンブラの構文 アセンブラの構文
アセンブラの構文: LDP [%rP,IMM5],%rA 例
例 例
例: 前に前に前に前に PFX がないがないがないがない:
LDP %o3,[%L2,3] ; [%L2 + 12] から %o3 をロード ;第 2 のレジスタ・オペランドは %L0、%L1、
;%L2、%L3 のどれかでなければなりません。
前に 前に 前に
前に PFX があるがあるがあるがある: PFX %hi(100)
LDP %o3,[%L2,%lo(100)] ; [%L2 + 400] から %o3 をロード 説明
説明 説明
説明: 前に前に前に前に PFX がないがないがないがない:
メモリから RA に 32 ビットのデータ値をロードします。 データを読み込む位置 は、RP のビット 31..2 で指定するワード・アラインされたアドレス (RP の 2 つ の LSB は無視されます ) にIMM5 で指定する 5 ビットのワード・スケールさ れた符合なしオフセットを加算した位置になります。
この命令は LD に似ていますが、補足的な機能として、一命令で 4 つのベース・
ポインタのいずれかに正の 5 ビット・オフセットを適用することができます。
ベース・ポインタは、4 つのレジスタ %L0、%L1、%L2、%L3 のいずれかでな ければなりません。
前に前に
前に前に PFX があるがあるがあるがある:
16 ビット・オフセットが、11 ビット K レジスタと IMM5 (5 ビット) を連結し て作成されます。 この 16 ビット・オフセット (K : IMM5) を32 ビットに符号拡 張し、4 倍し、RP のビット 31..2 に加算して、ワード・アラインされた有効ア ドレスが生成されます。
条件コード 条件コード 条件コード
条件コード: フラグ: 影響なし
命令のフォーマット 命令のフォーマット 命令のフォーマット
命令のフォーマット: RPi5 命令フィールド
命令フィールド 命令フィールド
命令フィールド: A = オペランド RA のレジスタ・インデックス IMM5 = 5 ビットの即値
P = ベース・ポインタ・レジスタのインデックス、16 よりも小さい
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 0 1 1 P IMM5 A
N V Z C
- - -
-LDS
メモリから メモリから メモリから
メモリから 32 ビット・データをロード ビット・データをロード ビット・データをロード ( ビット・データをロード スタック・アドレッシング・モード スタック・アドレッシング・モード スタック・アドレッシング・モード スタック・アドレッシング・モード
)処理 処理 処理
処理: RA← Mem32[align32(%sp + (IMM8 x 4))]
アセンブラの構文 アセンブラの構文 アセンブラの構文
アセンブラの構文: LDS %rA,[%sp,IMM8]
例例
例例: LDS %o1,[%sp,3] ; スタック +12 から %o1 をロード
;第 2 のレジスタは %sp でなければなりません。
説明 説明 説明
説明: メモリから RA に 32 ビットのデータ値をロードします。 データを読み込む位置 は、%sp のビット 31..2 で指定するワード・アラインされたアドレス (%sp の 2 つの LSB は無視されます ) にIMM8 で指定する 8 ビットのワード・スケール された符合なしオフセットを加算した位置になります。
通常、ソフトウェアではスタック・ポインタとして、%o6 (つまり %sp) が使用 されます。 LDS の一命令で、%sp 上の 1K バイトの範囲にあるオフセットの分 かっているデータ・ワードにアクセスすることができます。
条件コード 条件コード 条件コード
条件コード: フラグ: 影響なし
命令のフォーマット 命令のフォーマット 命令のフォーマット
命令のフォーマット: Ri8 命令フィールド
命令フィールド 命令フィールド
命令フィールド: A = オペランド RA のレジスタ・インデックス IMM8 = 8 ビットの即値
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 1 1 IMM8 A
N V Z C
- - -
-2
命命命命令 令令令 セセセセッ ッッット トトト
LSL
左論理シフト 左論理シフト 左論理シフト 左論理シフト
処理 処理 処理
処理: RA← (RA << RB[4..0]), 右からゼロで埋め込み
アセンブラの構文 アセンブラの構文 アセンブラの構文
アセンブラの構文: LSL %rA,%rB 例例
例例: LSL %L3,%g0 ; %g0 ビットだけ %L3 を左シフト
説明説明
説明説明: RA の値は RB [4..0] のビット数だけ左にシフトされます (RB のビット 31..5 は
無視されます)。
条件コード 条件コード 条件コード
条件コード: フラグ: 影響なし
命令のフォーマット 命令のフォーマット 命令のフォーマット
命令のフォーマット: RR 命令フィールド
命令フィールド 命令フィールド
命令フィールド: A = RA オペランドのレジスタ・インデックス B = RB オペランドのレジスタ・インデックス
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 1 1 0 B A
N V Z C
- - -