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

コントロール・レジスタの書き込み コントロール・レジスタの書き込み コントロール・レジスタの書き込み コントロール・レジスタの書き込み

処理 処理 処理

処理: CTLkRA アセンブラの構文

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

アセンブラの構文: WRCTL %rA 例例

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

WRCTL %g7 ; STATUS レジスタに %g7 を書き込み NOP ;必須

前に 前に 前に

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

WRCTL %g7 ; ISTATUS レジスタに %g7 を書き込み 説明

説明 説明

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

RA の値を STATUS レジスタにロードします。 STATUS へ WRCTL を行なった 場合は、次の命令をNOP にする必要があります。

前に前に

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

K で指定するマシン・コントロール・レジスタに RA の値を書き込みます。マ シン・コントロール・レジスタとそのインデックスについては、プログラマの モデルを参照してください。

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

条件コード: WRCTL のターゲットが STATUS レジスタである場合、条件コード・フラグは、

ビット RA [3..0] からの WRCTL 処理によって直接的に設定されます。他の WRCTL ターゲット・レジスタの場合、条件コードに影響がありません。

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

命令のフォーマット: 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 1 0 0 0 A

2

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

XOR

ビットごとの排他的論理和

ビットごとの排他的論理和 ビットごとの排他的論理和 ビットごとの排他的論理和

処理 処理 処理

処理: 前に前に前に前に PFX がないがないがないがない: RARA⊕ ΡΒ 前に

前に 前に

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

RARA⊕ (0x00.00 : K : IMM5) アセンブラの構文

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

アセンブラの構文: 前に前に前に前に PFX がないがないがないがない: XOR %rA,%rB 前に前に

前に前に PFX があるがあるがあるがある: PFX %hi(const) XOR %rA,%lo(const)

例 例

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

XOR %g0,%g1 ; %g1 と %g0 の XOR 前に

前に 前に

前に PFX があるがあるがあるがある: PFX %hi(16383)

XOR %o0,%lo(16383) ; %o0 と 16383 の XOR 説明

説明 説明

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

PFX (Ri5) が前にある場合

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

0 1 0 0 0 1 IMM5 A

N V Z C

-

-索引 索引 索引 索引

®

索索索索引 引引引

3

Numerics

16 ビット値の符号拡張 77

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

算出した

ハーフ・ワード・ポインタ・アドレス

) 85

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

スタック・

アドレッシング・モード

) 91

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

静的ハー

フ・ワード・オフセット・アドレス

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

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

スタック・

アドレッシング・モード

) 90

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

ポインタ・

アドレッシング・モード

) 89 5/16 ビットの即値 12

8 ビット値の符号拡張 78

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

算出したバ

イト・ポインタ・アドレス

) 87

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

スタック・

アドレッシング・モード

) 92

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

静的バイ

ト・オフセット・アドレス

) 88 A

ABS 命令 36 ADD 命令 37 ADDI 命令 38 AND 命令 39 ANDN 命令 40 ASR 命令 41 ASRI 命令 42 B

BGEN 命令 43 BR 命令 44 BSR 命令 45 C

CALL 命令 46 CLR_IE(%ctl8) 8 CMP 命令 47

CMPI 命令 48 CWP 操作の命令 26 E

EXT16D 命令 49 EXT16S 命令 50 EXT8D 命令 51 EXT8S 命令 52 F

FILL16 命令 53 FILL8 命令 54 G

GNU コンパイラ/

アセンブラ擬似命令 34

I

ISTATUS (%ctl1) 7 J

JMP 命令 55 K

K レジスタ 5 L

LD 命令 56 LDP 命令 57 LDS 命令 58 LSL 命令 59 LSLI 命令 60 LSR 命令 61 LSRI 命令 62 M

MOV 命令 63 MOVHI 命令 64 MOVI 命令 65 MSTEP 命令 66 MULL 命令 67

N

NEG 命令 68 Nios CPU の概要 1 Nios CPU ブロック図 25 NOT 命令 69

O

OR 命令 70 P

PFX 命令 71 R

RDCTL 命令 72 RESTORE 命令 73 RLC 命令 74 RRC 命令 75 S

SAVE 命令 76 SET_IE (%ctl9) 8 SEXT16 命令 77 SEXT8 命令 78 SKP0 命令 79 SKP1 命令 80 SKPRnz 命令 81 SKPRz 命令 82 SKPS 命令 83 ST 命令 84 ST16d 命令 85 ST16s 命令 86 ST8d 命令 87 ST8s 命令 88 STP 命令 89 STS 命令 90 STS16s 命令 91 STS8s 命令 92 SUB 命令 93 SUBI 命令 94 SWAP 命令 95 T

TRAP 命令 96 TRET 命令 97 W

WRCTL 命令 98 WVALID (%ctl2) 7

X

XOR 命令 99

ア ア ア

アドレス処理モード 12

インタラプト・イネーブル (IE) 6 インタラプト・プライオリティ (IPRI) 6 カ

カ カ カ

外部ハードウェア・インタラプト・ソース 19 カレント・ウィンドウ・ポインタ (CWP) 6 簡単な例外ハンドラ 23

簡単な例外ハンドラと複雑な例外ハンドラ 23 キャリー付で右ローテーション 75

キャリー付で左ローテーション 74 繰り上げなしの加算 37

減算 93

コントロール・レジスタ 5

コントロール・レジスタの書き込み 98 サ

サ サ サ

サブルーチンの呼び出し 46 サブルーチンへの分岐 45 算術演算後のジャンプ 55 算術反転 68

条件コードでスキップ 83 条件コード・フラグ 7 条件命令 17

乗算 67

乗算ステップ 66

ステータスの維持

: ISTATUS レジスタ 23

制御レジスタの読み込み 72

絶対ジャンプ命令 17

全幅レジスタ -- オフセットによる間接値 15 相対分岐命令 16

即値の移動 65 即値の加算 38 即値の減算 94 即値の比較 48

即値を上位のハーフ・ワードに移動 64 即値を使用した左論理シフト 60 即値を使用した右算術シフト 42 即値を使用した右論理シフト 62 ソフトウェア例外 (TRAP 命令

) 21

タ タ タ

トラップからのリターン 97

索索索索引 引引引

3

トラップ命令 17 ナ

ナ ナ ナ

内部例外ソース 19 ハ

ハ ハ ハ

ハーフ・ワードの抽出 ( 静的

) 50

ハーフ・ワードの抽出 ( 動的

) 49

ハーフ

ワードの埋め込み 53 バイトの埋め込み 54

バイト抽出 ( 静的

) 52

バイト抽出 ( 動的

) 51

パイプラインの実装 25 パイプラインの処理 25 汎用レジスタ 2 比較 47

左論理シフト 59

ビットごとの排他的論理和 99 ビットごとの論理 OR 70 ビットごとの論理演算子 AND 39 ビットごとの論理演算子 AND NOT 40 ビットの生成 43

表記の詳細 27

複雑な例外ハンドラ 24

部分幅レジスタ -- オフセットによる間接値 15 部分幅レジスタ -- 間接値 14

プリフィックス 71 プログラマのモデル 4

プログラムフロー・コントロール 16 プログラム・カウンタ 5

分岐 44

分岐遅延スロット 26 マ マ マ

右算術シフト 41 右論理シフト 61 無条件のトラップ 96 命令セット 2

命令のフォーマット 28

メモリ ( またはペリフェラル

) からの読み込み 9

メモリ ( またはペリフェラル

) への書き込み 10

メモリから 32 ビット・データをロード 56 メモリから 32 ビット・データをロード ( ス

タック・アドレッシング・モード

) 58

メモリから 32 ビット・データをロード ( ポイ

ンタ・アドレッシング・モード

) 57

メモリ・アクセスの概要 8

ヤ ヤ ヤ ヤ

呼び出し側のレジスタ・ウィンドウの復旧 73 呼び出し側のレジスタ・ウィンドウの保存 76 ラ

ラ ラ ラ

リターン・アドレス 23 例外 18

例外処理の概要 18 例外処理の手順 21 例外ベクタ・テーブル 18 レジスタが 0 の場合スキップ 82 レジスタが 0 以外の場合スキップ 81 レジスタの概要 2

レジスタ・ウィンドウのアンダフロー 19 レジスタ・ウィンドウのオーバフロー 20 レジスタ・ウィンドウの使用方法 22 レジスタ・グループ 3

レジスタ・ハーフ・ワードのスワップ 95 レジスタ・ビットが 0 の場合スキップ 79 レジスタ・ビットが 1 の場合スキップ 80 レジスタ間の移動 63

論理反転 69