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