LH.AQ 可以写 offset(rs1) 吗?
不可以。语法为 lh.aq rd, (rs1);rs1 直接提供地址,没有 offset 字段。
Zalasr 原子加载 2 字节,带 acquire-RCsc 排序标注。
rd:接收符号扩展到 XLEN 的加载值;rd=x0 只丢弃写回,加载的异常与副作用仍保留。
rs1:直接提供执行前的地址,没有 offset 立即数;rs1=x0 时地址为 0,rd=rs1 时仍用写回前的地址。
rs2 字段固定为 00000,不是汇编操作数;aq=1,rl 由 .aq 或 .aqrl 后缀确定,二者只指定排序标注。
LH.AQ 是 Zalasr 1.0 独立原子 load-acquire/store-release 家族中的 2 字节有序原子加载。它从 x[rs1] 指向的地址原子读取 16 位,按该宽度符号扩展后写入 x[rd];语法没有 offset 字段。地址默认必须按访问宽度自然对齐,除非 misaligned atomicity granule PMA 放宽该要求。
展示 Zalasr 独立 load-acquire 的 AMO 编码、无 offset 地址语法、16-bit 数据传输和 aq/rl 排序标注。
未自然按 2 字节对齐时,勾选框只断言所有访问字节位于同一 misaligned atomicity granule PMA;未勾选时模型展示 address-misaligned 或 access-fault 的允许异常分支。动画不判断具体平台的 PMA。
假定 Zalasr 已实现,且除所示对齐异常外,取指和数据访问均获准并成功。地址样例限制为非负安全整数(最大 2^53−1),RV32 还需适合 32 位;这是演示输入范围。rd=x0 仍执行加载及其副作用,只丢弃结果;rd=rs1 时使用写回前的地址。
LH.AQ 从内存取 16 位,并按该宽度的符号位扩展到 XLEN 后写 rd。
该动画展示 Zalasr 的 ISA 可见原子 load/store 与 aq/rl 排序标注;不模拟 LR/SC 预留、AMO read-modify-write 旧值返回、cache、总线或流水线时序。
LH.AQ 直接使用 rs1 作为地址,原子读取 2 字节并符号扩展到 rd;aq/rl 位提供排序标注,不会改变加载数据。
结合 «lh.aq x5, (x6)» 等实际代码理解该场景。
结合 «lh.aq x5, (x6)» 等实际代码理解该场景。
不可以。语法为 lh.aq rd, (rs1);rs1 直接提供地址,没有 offset 字段。
不是。它是原子加载,不建立预留,也不执行读改写。
不会。aq/rl 是排序标注;加载值仍按源宽度符号扩展到 rd。