• 検索結果がありません。

条件コードでスキップ 条件コードでスキップ 条件コードでスキップ 条件コードでスキップ

処理 処理 処理

処理: if (condition IMM4 is true)

then begin

if (Mem16[PC + 2] is PFX) then PCPC + 6 else PCPC + 4 end

アセンブラの構文 アセンブラの構文 アセンブラの構文

アセンブラの構文: SKPS cc_IMM4

例 例

: SKPS cc_ne

BSR SendIt ; Z フラグがクリアの場合にのみ呼び出し NOP ; (遅延スロット) どちらの場合でも実行 説明

説明 説明

説明: 指定した条件が真の場合、次の命令をスキップします。 次の命令が PFX の場合、

PFX とその次の命令を一緒にスキップします。

条件コード 条件コード 条件コード

条件コード: 設定:

cc_c 0x0 (C) cc_nc 0x1 (not C)

cc_z 0x2 (Z) cc_nz 0x3 (not Z) cc_mi 0x4 (N)

cc_pl 0x5 (not N) cc_ge 0x6 (not (N xor V))

cc_lt 0x7 (N xor V) cc_le 0x8 (Z or (N xor V)) cc_gt 0x9 (Not (Z or (N xorV)))

cc_v 0xa (V) cc_nv 0xb (not V)

cc_la 0xc (C or Z) cc_hi 0xd (not (C or Z)) 補足的に利用できるエイリアス・フラグ: cc_cs = cc_c

cc_eq = cc_z

cc_n = cc_mi cc_vs = cc_v

cc_cc = cc_nc cc_ne = cc_nz

cc_vc = cc_nv cc_p = cc_pl

これらのコードは、if 〜を表します。例えば、skps cc_eq は if equal と同じです。

命令のフォーマット 命令のフォーマット 命令のフォーマット

命令のフォーマット: i4w 命令フィールド

命令フィールド 命令フィールド

命令フィールド: IMM4 = 4 ビットの即値

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 1 1 1 1 1 0 1 1 1 0 IMM4

ST

32 ビット・データをメモリに格納

ビット・データをメモリに格納 ビット・データをメモリに格納 ビット・データをメモリに格納

処理 処理 処理

処理: 前に前に前に前に PFX がないがないがないがない: Mem32[align32(RB)]RA 前に

前に 前に

前に PFX があるがあるがあるがある:

Mem32[align32(RB + (σ(K) x 4))]RA アセンブラの構文

アセンブラの構文 アセンブラの構文

アセンブラの構文: ST [%rB],%rA

例 例

: 前に前に前に前に PFX がないがないがないがない:

ST [%g0],%i3 ; %g0 はポインタ、%i3 をストア 前に

前に 前に

前に PFX があるがあるがあるがある:

PFX 3 ; ワード・オフセット ST [%g0],%i3 ; %g0 + 12 をストア 説明

説明 説明

説明: 前に前に前に前に 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 1 B A

N V Z C

- - -

-2

命命命命令 令令令 セセセセッ ッッット トトト

ST16D

16 ビット・データをメモリに格納

ビット・データをメモリに格納 ビット・データをメモリに格納 ビット・データをメモリに格納 ( 算出したハーフ・ワード・ポインタ・アドレス 算出したハーフ・ワード・ポインタ・アドレス 算出したハーフ・ワード・ポインタ・アドレス 算出したハーフ・ワード・ポインタ・アドレス

)

処理 処理 処理

処理: 前に前に前に前に PFX がないがないがないがない:

hnMem32[align32(RA)]hn%r0、ここで n = RA[1]

前に 前に 前に

前に PFX があるがあるがあるがある:

hnMem32[align32(RA + (σ(K) x 4))]hn%r0、ここで n = RA[1]

アセンブラの構文 アセンブラの構文 アセンブラの構文

アセンブラの構文: ST16d [%rA],%r0

例 例

: 前に前に前に前に PFX がないがないがないがない:

FILL16 %r0,%g7 ; %r0 で %g7 の short を複製

ST16d [%o3],%r0 ; %r0 の %o3[1] 番目の short int を [%o3] にストア ;第 2 オペランドは %r0 でなければなりません。

前に 前に 前に

前に PFX があるがあるがあるがある: FILL16 %r0,%g3 PFX 5

ST16d [%o3],%r0 ; 上記と同じメモリに 20 バイト・オフセット 説明説明

説明説明: 前に前に前に前に PFX がないがないがないがない:

RA で指定しているハーフ・ワード・アラインされたメモリのアドレスに、%r0 の 2 つのハーフ・ワードのいずれかを格納します。 ビット RA[1] は、格納すべ き %r0 のハーフ・ワードを選択します (ハーフ・ワード 1 は最上位です)。 RA[0]

は無視されます。

ST16d は FILL16 と組み合わせて、2 つの命令でハーフ・ワードのストアを実行

します。 レジスタ %rX のビット 15..0 にハーフ・ワードがある場合、以下のシー

ケンスによって RA で与えられるハーフ・ワード・アラインされたメモリ・ア ドレスにこのハーフ・ワードが書き込まれます。

FILL16 %r0,%rX ST16d [%rA],%r0 前に

前に 前に

前に PFX があるがあるがあるがある:

K の値は符号拡張され、ワード・スケールされた符号付オフセットとして使用 されます。 このオフセットは、ベース・アドレス RA に加算され、最終的なバイ ト・アドレスにデータが書き込まれます。

条件コード 条件コード 条件コード

条件コード: フラグ: 影響なし

命令のフォーマット 命令のフォーマット 命令のフォーマット

命令のフォーマット: Rw 命令フィールド

命令フィールド 命令フィールド

命令フィールド: A = オペランド RA のレジスタ・インデックス

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 1 1 1 1 1 0 0 0 1 A

N V Z C

- - -

-ST16S

16 ビット・データをメモリに格納

ビット・データをメモリに格納 ビット・データをメモリに格納 ビット・データをメモリに格納 ( 静的ハーフ・ワード・オフセット・アドレス 静的ハーフ・ワード・オフセット・アドレス 静的ハーフ・ワード・オフセット・アドレス 静的ハーフ・ワード・オフセット・アドレス

)

処理 処理 処理

処理: 前に前に前に前に PFX がないがないがないがない:

hnMem32[align32(RA)]hn%r0、ここで n = IMM1 前に

前に 前に

前に PFX があるがあるがあるがある:

hnMem32[align32(RA + (σ(K) x 4))]hn%r0、ここで n = IMM1 アセンブラの構文

アセンブラの構文 アセンブラの構文

アセンブラの構文: ST16s [%rA],%r0,IMM1

例 例

: ST16s [%g8],%r0,1

説明 説明 説明

説明: 前に前に前に前に PFX がないがないがないがない:

%r0 の 2 つのハーフ・ワードのいずれかを、(RA[31..2] + IMM1 x 2) で指定する ハーフ・ワード・アラインされたメモリ・アドレスに格納します。 2 つのビット RA[1..0] は無視されます。 IMM2 は、%r0 の格納すべきハーフ・ワードを選択し ます (ハーフ・ワード #1 は最上位です)。

ST16s は FILL16 と組み合わせて、ワード・アラインしたベース・アドレスから ハーフ・ワード・オフセットした位置に、ハーフ・ワードのストアを実行しま

す。 レジスタ %rX のビット 15..0 にハーフ・ワードがある場合、以下のシーケ

ンスによって、(RA + Y x 2) で与えられるハーフ・ワード・アラインされたメモ リ・アドレスにこのハーフ・ワードが書き込まれます (RA にワード・アライン されたポインタがあると仮定)。

FILL16 %r0,%rX PFXY >> 2

ST16s [%rA],%r0,(Y >> 1) & 1 前に

前に 前に

前に PFX があるがあるがあるがある:

K と IMM1 を連結して、12 ビットの符号付きハーフ・ワード・スケールされた オフセットが作成されます。このオフセット (K : IMM1) は ハーフ・ワード・ス ケール (2 で乗算 ) され、さらに 32 ビットに符号拡張されて、ST 処理のハー フ・ワード・オフセットとして使用されます。

条件コード 条件コード 条件コード

条件コード: フラグ: 影響なし

命令のフォーマット 命令のフォーマット 命令のフォーマット

命令のフォーマット: Rilu 命令フィールド

命令フィールド 命令フィールド

命令フィールド: A = オペランド RA のレジスタ・インデックス IMM1 = 1 ビットの即値

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 1 1 0 1 1 0 1 IMM1 0 A

N V Z C

- - -

-2

命命命命令 令令令 セセセセッ ッッット トトト

ST8D

8 ビット・データをメモリに格納

ビット・データをメモリに格納 ビット・データをメモリに格納 ( ビット・データをメモリに格納 算出したバイト・ポインタ・アドレス 算出したバイト・ポインタ・アドレス 算出したバイト・ポインタ・アドレス 算出したバイト・ポインタ・アドレス

)

処理 処理 処理

処理: 前に前に PFX がない前に前に がないがないがない:

bnMem32[align32(RA)]bn%r0、ここで n = RA[1..0]

前に前に前に

前に PFX があるがあるがあるがある:

bnMem32[align32(RA +σ(K) x 4)]]bn%r0、ここで n = RA[1..0]

アセンブラの構文 アセンブラの構文 アセンブラの構文

アセンブラの構文: ST8d [%rA],%r0

例 例

: 前に前に前に前に PFX がないがないがないがない:

FILL8 %r0,%g7 ; %r0 で %g7 の下位バイトを倍増 ST8d [%o3],%r0 ; %r0 の %o3[1..0] 番目のバイトを ;[%o3] に格納

;第 2 オペランドは %r0 でなければなりません。

前に PFX がある: FILL8 %r0,%g3 PFX 5

ST8d [%o3],%r0 ; 上記と同じメモリに 20 バイト・オフセット 説明

説明 説明

説明:7 前に前に前に前に PFX がないがないがないがない:

%r0 の 4 つのバイトのいずれかを、RA で指定しているバイト・アドレスでメ モリに格納します。 2ビット RA[1..0] は、%r0 の格納すべきバイトを選択します (バイト 3 は最上位です)。

ST8d は FILL8 と組み合わせて、2 つの命令でバイトのストアを実行します。

ジスタ %rX のビット 7..0 にバイトがある場合、以下のシーケンスによって、RA で与えられるバイト・アドレスのメモリにこのバイトが書き込まれます。

FILL8 %r0,%rX ST8d [%rA],%r0 前に PFX がある:

K の値は符号拡張され、ワード・スケールされた符号付オフセットとして使用 されます。 このオフセットは、ベース・アドレス RA に加算され、最終的なバイ ト・アドレスにデータが書き込まれます。

条件コード 条件コード 条件コード

条件コード: フラグ: 影響なし

命令のフォーマット 命令のフォーマット 命令のフォーマット

命令のフォーマット: Rw 命令フィールド

命令フィールド 命令フィールド

命令フィールド: A = オペランド RA のレジスタ・インデックス

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 1 1 1 1 1 0 0 0 0 A

N V Z C

- - -

-ST8S

8 ビット・データをメモリに格納

ビット・データをメモリに格納 ビット・データをメモリに格納 ビット・データをメモリに格納 ( 静的バイト・オフセット・アドレス 静的バイト・オフセット・アドレス 静的バイト・オフセット・アドレス 静的バイト・オフセット・アドレス

)

処理 処理 処理

処理: 前に前に前に前に PFX がないがないがないがない:

bnMem32[align32(RA)]bn%r0、ここで n = IMM2 前に

前に 前に

前に PFX があるがあるがあるがある:

bnMem32[align32(RA + (σ(K) x 4))]← bn%r0、ここで n = IMM2 アセンブラの構文

アセンブラの構文 アセンブラの構文

アセンブラの構文: ST8s [%rA],%r0,IMM2

例 例

: 前に前に前に前に PFX がないがないがないがない: MOVI %g4,12

ST8s [%g4],%r0,3 ; %r0 の上位バイトを mem[15] に格納 前に

前に 前に

前に PFX があるがあるがあるがある: PFX 9

ST8s [%g4],%r0,2 ; %r0 のバイト 2 を ; mem[%g4 + 36 + 2] に格納 説明

説明 説明

説明: 前に前に前に前に PFX がないがないがないがない:

%r0 の 4 つのバイトのいずれかを、(RA[31..2] + IMM2) で指定しているメモリ のバイト・アドレスに格納します。 2 つのビット RA[1..0] は無視されます。 IMM2 は、%r0 の格納すべきバイトを選択します (バイト 3 は最上位です)。

ST8s は FILL8 と組み合わせて、ワード・アラインしたベース・ポインタにバイ ト・オフセットした位置にバイトのストアを実行します。 レジスタ %rX のビッ ト 7..0 にバイトがある場合、以下のシーケンスによって、(RA + Y) で与えられ るメモリのバイト・アドレスにこのバイトが書き込まれます (RA にワード・ア ラインされたポインタがあると仮定)。

FILL8 %r0,%rX PFXY >> 2

ST8s [%rA],%r0,Y & 3 前に

前に 前に

前に PFX があるがあるがあるがある:

バイト・スケールされた 13 ビットの符号付きオフセットは、K と IMM2 を連結 して作成されます。 このオフセット (K : IMM2) は 32 ビットに符号拡張され、ST 処理のバイト・オフセットとして使用されます。

条件コード 条件コード 条件コード

条件コード: フラグ: 影響なし

命令のフォーマット 命令のフォーマット 命令のフォーマット

命令のフォーマット: Ri2u 命令フィールド

命令フィールド 命令フィールド

命令フィールド: A = オペランド RA のレジスタ・インデックス IMM2 = 2 ビットの即値

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 1 1 0 1 1 0 0 IMM2 A

N V Z C

- - -