Everything

addi, mulhi


-

The addi and mulhi instructions of the device should be specified in the following formats.

-

ADDI imm16, reg1, reg2

-

MULHI imm16, reg1, reg2

 

-

If the following is specified for imm, the assembler executes instruction expansion to generate multiple machine instructions.

(a)

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

<1>

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

If reg2 is r0 (Can be specified only in addi. An error will occur when specified in mulhi.)

Format

Result of Assembly

addi    imm, reg1, r0
movhi   HIGHW(imm), r0, r1
add     reg1, r1

 

Else if reg2 is the same as reg1

Format

Result of Assembly

addi    imm, reg1, reg2
movhi   HIGHW(imm), r0, r1
add     r1, reg2

 

Else

Format

Result of Assembly

addi    imm, reg1, reg2
movhi   HIGHW(imm), r0, reg2
add     reg1, reg2

<2>

Else

If reg2 is r0 (Can be specified only in addi. An error will occur when specified in mulhi.)

Format

Result of Assembly

addi    imm, reg1, r0
mov     imm, r1
add     reg1, r1

 

Else if reg2 is the same as reg1

Format

Result of Assembly

addi    imm, reg1, reg2
mov     imm, r1
add     r1, reg2

 

Else

Format

Result of Assembly

addi    imm, reg1, reg2
mov     imm, reg2
add     reg1, reg2

(b)

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

If reg2 is r0 (Can be specified only in addi. An error will occur when specified in mulhi.)

Format

Result of Assembly

addi    #label, reg1, r0
mov     #label, r1
add     reg1, r1
addi    label, reg1, r0
mov     label, r1
add     reg1, r1
addi    $label, reg1, r0
mov     $label, r1
add     reg1, r1

 

Else if reg2 is the same as reg1

Format

Result of Assembly

addi    #label, reg1, reg2
mov     #label, r1
add     r1, reg2
addi    label, reg1, reg2
mov     label, r1
add     r1, reg2
addi    $label, reg1, reg2
mov     $label, r1
add     r1, reg2

 

Else

Format

Result of Assembly

addi    #label, reg1, reg2
mov     #label, reg2
add     reg1, reg2
addi    label, reg1, reg2
mov     label, reg2
add     reg1, reg2
addi    $label, reg1, reg2
mov     $label, reg2
add     reg1, reg2