AMOMINU.B 返回操作后的值吗?
不返回。和 A 扩展 AMO 一样,rd 写入原先从内存读出的旧值。
原子字节无符号最小值:rd = *rs1(符号扩展),*rs1 = umin(*rs1, rs2[7:0])
AMOMINU.B (Zabha扩展)原子地将rs1地址中的字节值加载到rd(符号扩展),与rs2的低字节按无符号数比较取无符号最小值,结果写回同一地址。支持aq/rl位。
展示 Zabha byte 原子指令的字段解析、aq/rl 排序位、内存读取和 RMW 状态更新。
Zabha 扩展 byte 原子指令使用 32-bit 编码;动画先展示字段切分。
AMOMINU.B 按无符号 8-bit byte 比较选择内存写回值;这不是逐 bit 逻辑运算。
该动画展示 ISA 可见的原子读改写、比较并交换、LR/SC 预留状态和内存排序位,不表示任何特定 CPU 的缓存一致性实现、流水线或时序。
AMOMINU.B 是 Zabha 的 8 位 无符号最小值 指令,原子读取内存旧值、按无符号 8 位比较选择写回值,并把旧内存值符号扩展后写入 rd。
结合 «amominu.b a0, a2, (a1)» 等实际代码理解该场景。
结合 «amominu.b a0, a2, (a1)» 等实际代码理解该场景。
不返回。和 A 扩展 AMO 一样,rd 写入原先从内存读出的旧值。
不会按语义修改相邻字节;Zabha 正是为 字节 粒度原子读改写提供原生形式。