The following can be specified as a displacement (disp):
The st.b, st.h, and st.w instructions store the data of the lower 1 byte, lower 1 halfword, and 1 word, respectively, of the register specified by the first operand to the address specified by the second operand.
If any of the following is specified as disp, the assembler generates one st machine instructionNote. In the following explanations, st denotes the st.b/st.h/st.w instructions. |
Relative expression having $label for a label having a definition in the sdata/sbss-attribute section |
The st machine instruction takes an immediate value in the range of -32,768 to +32,767 (0xFFFF8000 to 0x7FFF) as the displacement. |
If any of the following is specified as disp, the assembler executes instruction expansion to generate one or more machine instructions. |
Absolute expression having a value exceeding the range of -32,768 to +32,767, but within the range of -4,194,304~+4,194,303 |
Relative expression having #label or label, or that having $label for a label having no definition in the sdata/sbss-attribute section |
If an absolute expression, a relative expression having !label, a relative expression with #label, or a relative expression with #label and with LOWW applied is specified as disp, [reg1] can be omitted. If omitted, the assembler assumes that [r0] is specified. |
If a relative expression with $label, or a relative expression with $label and with LOWW applied is specified as disp, [reg1] can be omitted. If omitted, the assembler assumes that [gp] is specified. |
If a relative expression with %label is specified as disp, [reg1] can be omitted. If omitted, the assembler assumes that [ep] is specified. |
If a value that is not a multiple of 2 is specified as the disp of st.h or st.w, the assembler aligns disp with 2 and generates a code. Then, the assembler outputs the following messages. |