|Instruction||move immediate into high halfword|
rB ← (IMMED : 0x0000)
movhi rB, IMMED
movhi r6, 0x8000
Writes the immediate value IMMED into the high halfword of rB, and clears the lower halfword of rB to 0x0000.
The maximum allowed value of IMMED is 65535. The minimum allowed value is 0. To load a 32-bit constant into a register, first load the upper 16 bits using a movhi pseudo-instruction. The %hi() macro can be used to extract the upper 16 bits of a constant or a label. Then, load the lower 16 bits with an ori instruction. The %lo() macro can be used to extract the lower 16 bits of a constant or label as shown in the following code:
movhi rB, %hi(value)
ori rB, rB, %lo(value)
An alternative method to load a 32-bit constant into a register uses the %hiadj() macro and the addi instruction as shown in the following code:
movhi rB, %hiadj(value)
addi rB, rB, %lo(value)
movhi is implemented as orhi rB, r0, IMMED.
Did you find the information on this page useful?