Everything

div, divhu, divu


-

デバイスのdiv,divhu,divu命令は次の形式です。

-

DIV reg1, reg2, reg3

-

DIVHU reg1, reg2, reg3

-

DIVU reg1, reg2, reg3

 

-

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

-

div imm, reg2, reg3

-

divhu imm, reg2, reg3

-

divu imm, reg2, reg3

 

-

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

(a)

0

指定形式

アセンブル結果

div     0, reg2, reg3
div     r0, reg2, reg3

(b)

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

指定形式

アセンブル結果

div     imm5, reg2, reg3
mov     imm5, r1
div     r1, reg2, reg3

(c)

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

指定形式

アセンブル結果

div     imm16, reg2, reg3
movea   imm16, r0, r1
div     r1, reg2, reg3

(d)

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

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

指定形式

アセンブル結果

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

 

上記以外の場合

指定形式

アセンブル結果

div     imm, reg2, reg3
mov     imm, r1
div     r1, reg2, reg3

(e)

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

指定形式

アセンブル結果

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

(f)

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

指定形式

アセンブル結果

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