Loads a halfword of data from a specified location in memory into a general-purpose register, copies bit 0 of the halfword into the remaining 16 bits of the general-purpose register, and possibly places the address in another general-purpose register.
Bits | Value |
---|---|
0-5 | 43 |
6-10 | RT |
11-15 | RA |
16-31 | D |
lhau | RT, D( RA) |
The lhau instruction loads a halfword of data from a specified location in memory, addressed by the effective address (EA), into bits 16-31 of the target general-purpose register (GPR) RT and copies bit 0 of the halfword into bits 0-15 of GPR RT.
If GPR RA is not 0, the EA is the sum of the contents of GPR RA and D, a 16-bit, signed two's complement integer sign-extended to 32 bits. If GPR RA is 0, then the EA is D.
If RA does not equal RT and RA does not equal 0, and the storage access does not cause an Alignment interrupt or a Data Storage interrupt, then the EA is placed into GPR RA.
The lhau instruction has one syntax form and does not affect the Fixed-Point Exception Register or Condition Register Field 0.
The following code loads a halfword of data into bits 16-31 of GPR 6, copies bit 0 of the halfword into bits 0-15 of GPR 6, and stores the effective address in GPR 5:
.csect data[rw] storage: .short 0xffff # Assume GPR 5 contains the address of csect data[rw]. .csect text[pr] lhau 6,storage(5) # GPR 6 now contains 0xffff ffff. # GPR 5 now contains the address of storage.
Fixed-Point Load and Store with Update Instructions .