Multiplies half-word Immediate.
The following can be specified for imm:
The assembler does not check whether the value of the expression exceeds 16 bits. The generated mulhi machine instruction performs the operation by using the lower 16 bits. |
Multiplies the value of the absolute expression, relative expression, or expression with HIGHW, LOWW, or HIGHW1 applied specified by the first operand by the value of the register specified by the second operand, and stores the result in the register specified by the third operand.
Relative expression having $label for a label having a definition in the sdata/sbss-attribute section |
The mulhi machine instruction takes an immediate value in the range of -32,768 to +32,767 (0xFFFF8000 to 0x7FFF) as the first operand. |
If the following is specified for imm, the assembler executes instruction expansion to generate multiple machine instructions. |
Relative expression having #label or label, or that having $label for a label having no definition in the sdata/sbss-attribute section |
mulhi #label, reg1, reg2 |
mov #label, r1 mulh r1, reg2 |
mulhi label, reg1, reg2 |
mov label, r1 mulh r1, reg2 |
mulhi $label, reg1, reg2 |
mov $label, r1 mulh r1, reg2 |
mulhi #label, reg1, reg2 |
mov #label, reg2 mulh reg1, reg2 |
mulhi label, reg1, reg2 |
mov label, reg2 mulh reg1, reg2 |
mulhi $label, reg1, reg2 |
mov $label, reg2 mulh reg1, reg2 |
If r0 is specified by the third operand, the assembler outputs the following message and stops assembling. |