Is MOP.R.10 a NOP by default?
Unless redefined, it writes zero to x[rd], replacing the old value when rd is not x0. With rd=x0, the write is discarded and x0 remains zero.
MOP.R.10 is a 32-bit Zimop 1.0 MOP that writes zero to x[rd] unless another extension redefines it.
Extension condition: RV32/RV64 with Zimop 1.0. The zero-write behavior below applies unless another extension redefines this encoding.
MOP.R.10 uses opcode 1110011 (0x73), funct3 100. MOP.R.n uses SYSTEM fields: bits 31..20 are the fixed n selector, rs1 and rd are explicit register fields, funct3=100, and opcode=SYSTEM. The default definition writes only 0 to x[rd]; rs1 is not a default read source.
MOP.R.10 is a Zimop may-be-operation with recommended syntax mop.r.10 rd, rs1. If no other extension redefines the encoding, the official default behavior writes 0 to x[rd]. The encoding space allows future extensions to define it as reading x[rs1] and writing x[rd]. Standard software should not execute a MOP unless deliberately targeting an extension that redefines it.
For MOP.R.10, n=10 selects the encoding; it is not an assembly immediate. rd and rs1 can name any integer register, including x0. The default result is independent of rs1.
Default Zimop behavior only: mop.r.10 x5, x6 sets x5 to zero regardless of the old x6 value; x6 is unchanged. Standard software should execute it only when deliberately targeting an extension that redefines this MOP.
Unless redefined, it writes zero to x[rd], replacing the old value when rd is not x0. With rd=x0, the write is discarded and x0 remains zero.
No, unless the software deliberately targets an extension that redefines that MOP.