AMOXOR.H 返回操作后的值吗?
不返回。和 A 扩展 AMO 一样,rd 写入原先从内存读出的旧值。
原子半字按位异或:rd = *rs1(符号扩展),*rs1 ^= rs2[15:0]
AMOXOR.H (Zabha扩展)原子地将rs1地址中的半字值加载到rd(符号扩展),与rs2的低16位按位异或后写回同一地址。支持aq/rl位。
AMOXOR.H 是 Zabha 的 16 位 原子按位异或 指令,原子读取内存旧值、按 16 位宽执行读改写,并把旧内存值符号扩展后写入 rd。
结合 «amoxor.h a0, a2, (a1)» 等实际代码理解该场景。
结合 «amoxor.h a0, a2, (a1)» 等实际代码理解该场景。
不返回。和 A 扩展 AMO 一样,rd 写入原先从内存读出的旧值。
不会按语义修改相邻字节;Zabha 正是为 半字 粒度原子读改写提供原生形式。