Everything

mul


-

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

-

MUL reg1, reg2, reg3

-

MUL imm9, reg2, reg3

 

-

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

(a)

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

指定形式

アセンブル結果

mul     imm16, reg2, reg3
movea   imm16, r0, r1
mul     r1, reg2, reg3

(b)

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

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

指定形式

アセンブル結果

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

 

上記以外の場合

指定形式

アセンブル結果

mul     imm, reg2, reg3
mov     imm, r1
mul     r1, reg2, reg3

(c)

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

指定形式

アセンブル結果

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

(d)

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

指定形式

アセンブル結果

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