The following can be specified for imm:
The assembler does not check whether the value of the expression exceeds 16 bits. The generated machine instruction performs execution using the lower 16 bits. |
Divides the register value specified by the second operand by the value of the lower halfword data of the register specified by the first operand as a signed value, and stores the quotient in the register specified by the second operand.
Divides the register value specified by the second operand by the value of the lower halfword data of the absolute or relative expression specified by the first operand as a signed value and stores the quotient in the register specified by the second operand.
Divides the register value specified by the second operand by the value of the lower halfword data of the register specified by the first operand as a signed value and stores the quotient in the register specified by the second operand, and the remainder in the register specified by the third operand. If the same register is specified by the second and third operands, the remainder is stored in that register.
Divides the register value specified by the second operand by the value of the lower halfword data of the absolute or relative expression specified by the first operand as a signed value and stores the quotient in the register specified by the second operand, and the remainder in the register specified by the third operand. If the same register is specified by the second and third operands, the remainder is stored in that register.
If the instruction is executed in syntaxes "divh reg1, reg2" and "divh reg1, reg2, reg3", the assembler generates one divh machine instruction. |
If the instruction is executed in syntax "divh imm, reg2", and the following expression is specified for imm, the assembler executes instruction expansion to generate multiple machine instructionsNote. |
Absolute expression exceeding the range of -16 to +15, but within the range of -32,768 to +32,767 |
If all the lower 16 bits of the value of imm are 0
Relative expression having !label or %label, or that having $label for a label having a definition in the sdata/sbss-attribute section |
divh !label, reg |
movea !label, r0, r1 divh r1, reg |
divh %label, reg |
movea %label, r0, r1 divh r1, reg |
divh $label, reg |
movea $label, r0, r1 divh r1, reg |
Relative expression having #label or label, or that having $label for a label having no definition in the sdata/sbss-attribute section |
divh #label, reg |
mov #label, r1 divh r1, reg |
divh label, reg |
mov label, r1 divh r1, reg |
divh $label, reg |
mov $label, r1 divh r1, reg |
If the instruction is executed in syntax "divh imm, reg2, reg3", and the following expression is specified for imm, the assembler executes instruction expansion to generate one or more machine instructions. |
Absolute expression exceeding the range of -16 to +15, but within the range of -32,768 to +32,767 |
If all the lower 16 bits of the value of imm are 0
Relative expression having !label or %label, or that having $label for a label having a definition in the sdata/sbss-attribute section |
divh !label, reg2, reg3 |
movea !label, r0, r1 divh r1, reg2, reg3 |
divh %label, reg2, reg3 |
movea %label, r0, r1 divh r1, reg2, reg3 |
divh $label, reg2, reg3 |
movea $label, r0, r1 divh r1, reg2, reg3 |
Relative expression having #label or label, or that having $label for a label having no definition in the sdata/sbss-attribute section |
divh #label, reg2, reg3 |
mov #label, r1 divh r1, reg2, reg3 |
divh label, reg2, reg3 |
mov label, r1 divh r1, reg2, reg3 |
divh $label, reg2, reg3 |
mov $label, r1 divh r1, reg2, reg3 |
If r0 is specified by the first operand or the second operand in syntax "divh reg1, reg2", the assembler outputs either of the following message and stops assembling. |
E0550239 : Illegal operand (cannot use r0 as source in RH850 mode). |
E0550240 : Illegal operand (cannot use r0 as destination in RH850 mode). |
If r0 is specified by the second operand (reg2) in syntax "divh imm, reg2", the assembler outputs the message and stops assembling. |
If 0 is specified by the first operand (imm) in syntax "divh imm, reg2", the assembler outputs the message and stops assembling. |