Subtracts saturated (immediate).
The following can be specified for imm:
Subtracts the value of the absolute expression, relative expression, or expression with HIGHW, LOWW, or HIGHW1 applied specified by the first operand from the value of the register specified by the second operand, and stores the result in the register specified by the third operand. If the result exceeds the maximum positive value of 0x7FFFFFFF, however, 0x7FFFFFFF is stored in the register specified by the third operand. Likewise, if the result exceeds the maximum negative value of 0x80000000, 0x80000000 is stored in the register specified by the third operand. In both cases, the SAT flag is set to 1.
If the following is specified for imm, the assembler generates one satsubi machine instructionNote. |
Relative expression having $label for a label having a definition in the sdata/sbss-attribute section |
satsubi !label, reg1, reg2 |
satsubi !label, reg1, reg2 |
satsubi %label, reg1, reg2 |
satsubi %label, reg1, reg2 |
The satsubi 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 |
satsubi #label, reg1, reg2 |
mov #label, r1 satsub r1, reg2 |
satsubi label, reg1, reg2 |
mov label, reg2 satsub r1, reg2 |
satsubi $label, reg1, reg2 |
mov $label, reg2 satsub r1, reg2 |
satsubi #label, reg1, reg2 |
mov #label, reg2 satsubr reg1, reg2 |
satsubi label, reg1, reg2 |
mov label, reg2 satsubr reg1, reg2 |
satsubi $label, reg1, reg2 |
mov $label, reg2 satsubr reg1, reg2 |
If r0 is specified by the second operand, the assembler outputs the following message and stops assembling. |