Can LH.AQRL use offset(rs1)?
No. The syntax is lh.aqrl rd, (rs1); rs1 supplies the address, with no offset field.
Zalasr atomic load of 2 bytes with acquire+release-RCsc ordering.
rd: receives the loaded value sign-extended to XLEN; rd=x0 discards only writeback while retaining load exceptions and side effects.
rs1: supplies the pre-execution address directly, with no offset immediate. rs1=x0 gives address zero; rd=rs1 still uses the address before writeback.
The rs2 field is fixed to 00000 and is not an assembly operand. aq=1, while .aq or .aqrl selects rl; both bits specify ordering annotations only.
LH.AQRL is a 2-byte ordered atomic load in the Zalasr 1.0 standalone load-acquire/store-release family. It atomically reads 16 bits from the address in x[rs1], sign-extends from that width, and writes x[rd]; the syntax has no offset field. The address is naturally aligned to the access width by default unless relaxed by the misaligned atomicity granule PMA.
Shows the Zalasr standalone load-acquire AMO encoding, no-offset address syntax, 16-bit data transfer, and aq/rl ordering annotation.
For an address not naturally aligned to 2 bytes, the checkbox only asserts that all accessed bytes lie in one misaligned atomicity-granule PMA. Without that assertion, the model shows the permitted address-misaligned or access-fault branch; it does not determine a platform's PMA.
Assume implemented Zalasr and successful permitted fetch/data access except for the shown alignment exception. Address samples are nonnegative safe integers (at most 2^53−1), also fitting 32 bits on RV32; this is a demo input limit. rd=x0 still performs the load and its side effects, discarding only the result; rd=rs1 uses the address before writeback.
LH.AQRL loads 16 bits from memory and sign-extends from that width to XLEN before writing rd.
This animation shows ISA-visible Zalasr atomic load/store behavior and aq/rl ordering annotations; it does not model LR/SC reservations, AMO read-modify-write old-value return, caches, buses, or pipeline timing.
LH.AQRL uses rs1 directly as the address, atomically reads 2 bytes, and sign-extends into rd; aq/rl bits provide ordering annotations and do not change the loaded data.
Understand this scenario with real code like «lh.aqrl x5, (x6)».
Understand this scenario with real code like «lh.aqrl x5, (x6)».
No. The syntax is lh.aqrl rd, (rs1); rs1 supplies the address, with no offset field.
No. It is an atomic load, with neither a reservation nor a read-modify-write.
No. aq/rl are ordering annotations; the loaded value is still sign-extended from the source width into rd.