5.1.4 オペレーション部の記述方法

-

記述方法

ニーモニック[サイズ指定子(分岐距離指定子)]

-

内容

命令は、以下2つの要素から構成されます。

(1) ニーモニック ・・・ 命令の動作を示します。

(2) サイズ指定子 ・・・ 処理対象のデータサイズを指定します。

 

(1)

ニーモニック

ニーモニックは命令の動作を示します。

 MOV ・・・ 転送命令            
 ADD ・・・ 算術演算命令(加算命令)

(2)

サイズ指定子

サイズ指定子は、命令コードのオペランドサイズを指定するものです。

-

記述方法

   .size

-

内容

オペランドの演算サイズを指定します。正確にはその命令が処理を行うために読み出すデータのサイズを指定します。sizeは下記表の通りです。

表 5.2

サイズ指定子

size

内容

B

バイト(8ビット)

W

ワード(16ビット)

L

ロングワード(32ビット)

sizeは大文字小文字いずれも可。

(例) MOV.B #0, R3 ・・・ バイト指定

本指定子は、「RXファミリソフトウェアマニュアル」の命令フォーマットで (.size) が明記されているものについてのみ指定が可能でかつ必須となります。

(3)

分岐距離指定子

分岐距離指定子は、分岐命令および相対サブルーチン分岐命令で指定します。

-

記述方法

    .length

-

内容

lengthは下記表の通りです。

表 5.3

分岐距離指定子

length

内容

S

3ビットPC前方相対

(+3〜+10)

B

8ビットPC相対

(-128〜+127)

W

16ビットPC相対

(-32768〜+32767)

A

24ビットPC相対

(-8388608〜+8388607)

L

レジスタ相対

(-2147483648〜+2147183647)

lengthは大文字小文字いずれも可。

(例)

BRA.W label ・・・ 16ビット相対指定

BRA.L R1 ・・・ レジスタ相対指定

本指定子は省略可能です。省略した場合は次の条件を全て満たした場合のみ、もっともオペコードが小さくなるように(S/B/W/Aの中から)アセンブラがコードを選択します。

(1) オペランドが、レジスタ以外で記述されている場合

(2) オペランドが、アセンブル時に分岐距離が確定する分岐先である場合

(例)ラベル+アセンブル時確定値

ラベル−アセンブル時確定値

アセンブル時確定値+ラベル

(3) オペランドのラベルが同一セクション内で定義されている場合

また、オペランドがレジスタの場合、分岐距離指定子 Lが選択されます。

条件分岐命令の場合、分岐距離が規定の範囲を超えているときは条件を反転してコードを生成します。

各命令で指定可能な分岐距離指定子は、下記表の通りです。

表 5.4

分岐命令ごとの分岐距離指定子

命令

.S

.B

.W

.A

.L

BCnd

(Cnd=EQ/Z)

×

×

(Cnd=NE/NZ)

×

×

(Cnd=上記以外)

×

×

×

×

BRA

BSR

×

×