mul


-

The mul instructions of the device should be specified in the following formats.

-

MUL reg1, reg2, reg3

-

MUL imm9, reg2, reg3

 

-

If the instruction is executed in syntax "mul imm9, reg2, reg3", and the following expression is specified for imm, the assembler executes instruction expansion to generate multiple machine instructions.

(a)

Absolute expression exceeding the range of -256 to +255, but within the range of -32,768 to +32,767

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

(b)

Absolute expression having a value exceeding the range of -32,768 to +32,767

If all the lower 16 bits of the value of imm are 0

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

 

Else

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

(c)

Relative expression having !label or %label, or that having $label for a label having a definition in the sdata/sbss-attribute section

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)

Relative expression having #label or label, or that having $label for a label having no definition in the sdata/sbss-attribute section

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