jarl


ジャンプ・アンド・レジスタ・リンクを行います。(Jump and Register Link)

[指定形式]

-

jarl disp22, reg2(-Xasm_far_jumpオプション非指定時)

-

jarl disp32, reg2(-Xasm_far_jumpオプション指定時)

-

jarl [reg1], reg3

 

disp22に指定できるものを次に示します。

-

22ビット幅までの値を持つ絶対値式

-

ラベルのPCオフセット参照を持つ相対値式

 

disp32に指定できるものを次に示します。

-

32ビット幅までの値を持つ絶対値式

-

ラベルのPCオフセット参照を持つ相対値式

[機能]

-

“jarl disp22, reg2”の形式

第1オペランドに指定した絶対値式,または相対値式の値と,現在のプログラム・カウンタ(PC)値を加算したアドレスに制御を移します。なお,戻りアドレスは,第2オペランドに指定したレジスタに格納されます。

-

“jarl disp32, reg2”の形式

第1オペランドに指定した絶対値式,または相対値式の値と,現在のプログラム・カウンタ(PC)値を加算したアドレスに制御を移します。なお,戻りアドレスは,第2オペランドに指定したレジスタに格納されます。

-

“jarl [reg1], reg3”の形式

第1オペランドに指定したレジスタ値が示すアドレスに制御を移します。なお,戻りアドレスは,第2オペランドに指定したレジスタに格納されます。

[詳細説明]

-

“jarl disp22, reg2”の形式の命令に対し,disp22に次のものを指定した場合,アセンブラでは,機械語命令のjarl命令が1つ生成されます。

(a)

-2097152〜+2097151の範囲の絶対値

(b)

ラベルのPCオフセット参照を持つ相対値式

機械語命令のjarlは,オペランドに-2097152〜+2097151(0xFE00000〜0x1FFFFF)の範囲のイミーディエトをとります。

 

-

“jarl disp32, reg2”の形式の命令に対し,アセンブラでは,機械語命令のjarl命令(6バイト長命令)が1つ生成されます。

-

“jarl [reg1], reg3”の形式の命令に対し,アセンブラでは,機械語命令のjarl命令が1つ生成されます。

[フラグ]

CY

OV

S

Z

SAT

[注意事項]

-

disp22に,-2097152〜+2097151の範囲を越える絶対値式を指定した場合,次のメッセージが出力され,アセンブルが中止されます。

E0550230 : ディスプレースメントとして指定された値が指定可能な値の範囲を越えています。

 

-

disp22/disp32に,奇数値を持つ絶対値式を指定した場合,次のメッセージが出力され,アセンブルが中止されます。

E0550226 : 奇数のディスプレースメントが指定されています。

 

-

reg3にr0を指定すると,次のメッセージが出力され,アセンブルが中止されます。

E0550240 : RH850コア指定時には,デスティネーション・オペランドにr0を指定することはできません。