Everything

divh


-

デバイスのdivh命令は次の形式です。

-

DIVH reg1, reg2

-

DIVH reg1, reg2, reg3

 

-

asrhでは,上記に加えて,次の形式も指定できます。

-

divh imm, reg2

-

divh imm, reg2, reg3

 

-

“divh imm, reg2”の形式でimmに次のものを指定した場合,アセンブラでは,命令展開が行われ,1つ,または複数個の機械語命令が生成されます。

(a)

0以外の-16~+15の範囲の絶対値式

指定形式

アセンブル結果

divh    imm5, reg
mov     imm5, r1
divh    r1, reg

(b)

-16~+15の範囲を越え,-32768~+32767の範囲の絶対値式

指定形式

アセンブル結果

divh    imm16, reg
movea   imm16, r0, r1
divh    r1, reg

(c)

immに-32768~+32767の範囲を越える絶対値式

immの値の下位16ビットがすべて0の場合

指定形式

アセンブル結果

divh    imm, reg
movhi   HIGHW(imm), r0, r1
divh    r1, reg

 

上記以外の場合

指定形式

アセンブル結果

divh    imm, reg
mov     imm, r1
divh    r1, reg

(d)

!label,または%labelを持つ相対値式,およびsdata/sbss属性セクションに定義を持つラベルの$labelを持つ相対値式

指定形式

アセンブル結果

divh    !label, reg2
movea   !label, r0, r1
divh    r1, reg
divh    %label, reg2
movea   %label, r0, r1
divh    r1, reg
divh    $label, reg2
movea   $label, r0, r1
divh    r1, reg

(e)

#label,またはlabelを持つ相対値式,およびsdata/sbss属性セクションに定義を持たないラベルの$labelを持つ相対値式

指定形式

アセンブル結果

divh    #label, reg
mov     #label, r1
divh    r1, reg
divh    label, reg
mov     label, r1
divh    r1, reg
divh    $label, reg
mov     $label, r1
divh    r1, reg

 

-

“divh imm, reg2, reg3”の形式でimmに次のものを指定した場合,アセンブラでは,命令展開が行われ,1つ,または複数個の機械語命令が生成されます。

(a)

0

指定形式

アセンブル結果

divh    0, reg2, reg3
divh    r0, reg2, reg3

(b)

0以外の-16~+15の範囲の絶対値式

指定形式

アセンブル結果

divh    imm5, reg2, reg3
mov     imm5, r1
divh    r1, reg2, reg3

(c)

-16~+15の範囲を越え,-32768~+32767の範囲の絶対値式

指定形式

アセンブル結果

divh    imm16, reg2, reg3
movea   imm16, r0, r1
divh    r1, reg2, reg3

(d)

-32768~+32767の範囲を越える絶対値式

immの値の下位16ビットがすべて0の場合

指定形式

アセンブル結果

divh    imm, reg2, reg3
movhi   HIGHW(imm), r0, r1
divh    r1, reg2, reg3

 

上記以外の場合

指定形式

アセンブル結果

divh    imm, reg2, reg3
mov     imm, r1
divh    r1, reg2, reg3

(e)

!label,または%labelを持つ相対値式,およびsdata/sbss属性セクションに定義を持つラベルの$labelを持つ相対値式

指定形式

アセンブル結果

divh    !label, reg2, reg3
movea   !label, r0, r1
divh    r1, reg2, reg3
divh    %label, reg2, reg3
movea   %label, r0, r1
divh    r1, reg2, reg3
divh    $label, reg2, reg3
movea   $label, r0, r1
divh    r1, reg2, reg3

(f)

#label,またはlabelを持つ相対値式,およびsdata/sbss属性セクションに定義に持たないラベルの$labelを持つ相対値式

指定形式

アセンブル結果

divh    #label, reg2, reg3
mov     #label, r1
divh    r1, reg2, reg3
divh    label, reg2, reg3
mov     label, r1
divh    r1, reg2, reg3
divh    $label, reg2, reg3
mov     $label, r1
divh    r1, reg2, reg3