MOP.RR.4 默认会写 rd 吗?
会,但只在 Zimop 默认定义适用时;rd=x0 时 x0 保持 0。重定义扩展适用时应使用其语义。
MOP.RR.4 在 Zimop 默认定义下将 0 写入 rd;重定义扩展可使用 rs1、rs2。
MOP.RR.4 使用 opcode 1110011(0x73)、funct3 100、固定 n 选择子 1100001。MOP.RR.n 使用 SYSTEM 字段:bits 31..25 是固定的 n 选择子,rs2、rs1 和 rd 是显式寄存器字段,funct3=100,opcode=SYSTEM。默认定义只向 x[rd] 写 0;rs1 和 rs2 都不是默认读取的源操作数。
MOP.RR.4 是 Zimop may-be-operation,推荐语法为 mop.rr.4 rd, rs1, rs2。若没有其他扩展重定义该编码,官方默认行为是把 0 写入 x[rd];该编码空间允许未来扩展定义为读取 x[rs1] 与 x[rs2] 并写入 x[rd]。标准软件不应执行 MOP,除非明确面向重定义该 MOP 的扩展。 在 RV32/RV64 中,rd 可选择 x0,此时 x0 仍为 0;寄存器重叠不会把默认行为变成复制或运算。
MOP.RR.4 是 Zimop 的三寄存器 MOP 编码;未被重定义时,它把 0 写入 rd。
假定 RV32/RV64 Zimop 1.0 已实现且没有重定义适用:mop.rr.4 x5, x6, x7 写 x5=0,与 x6、x7 原值无关;x6、x7 不变。rd 与源字段重叠时仍写零;rd=x0 时 x0 保持 0。普通软件只应在明确面向重定义该 MOP 的扩展时执行它。
假定 RV32/RV64 Zimop 1.0 已实现且没有重定义适用:mop.rr.4 x5, x6, x7 写 x5=0,与 x6、x7 原值无关;x6、x7 不变。rd 与源字段重叠时仍写零;rd=x0 时 x0 保持 0。普通软件只应在明确面向重定义该 MOP 的扩展时执行它。
会,但只在 Zimop 默认定义适用时;rd=x0 时 x0 保持 0。重定义扩展适用时应使用其语义。
两者默认都写零。MOP.RR 的推荐语法含 rd、rs1、rs2,允许重定义扩展使用两个源;MOP.R 只含 rd、rs1,允许重定义扩展使用一个源。