C.MOP.5

RISC-V C.MOP.5 指令详解

指令手册C-type

Zcmop 16 位无操作数 MOP,基础行为不写寄存器;Zicfiss 激活时此编码用于 C.SSPOPCHK x5。

指令语法

c.mop.5

推荐语法 c.mop.5 没有显式操作数;16 位编码固定为 0110001010000001,没有可变寄存器或立即数字段。

Zcmop 1.0 依赖 Zca;基础行为不写任何寄存器,隐含 x5 可由重定义使用。

Zicfiss 已实现且在当前特权模式激活时,此编码用于 C.SSPOPCHK x5;否则恢复基础 Zcmop 行为。

ZcmopMay-Be-Operations

指令编码

15..0
0110001010000001

C.MOP.5 的 16 位编码固定为 0110001010000001;汇编语法没有显式操作数。

格式: Zcmop 固定 16 位编码
16 位编码: 0110001010000001
压缩指令,16 位编码。

指令行为说明

C.MOP.5 是 Zcmop 1.0 的压缩 may-be-operation,依赖 Zca。推荐语法 c.mop.5 没有显式操作数,基础行为不写任何寄存器。重定义可使用隐含的 x5:Zicfiss 已实现且在当前特权模式激活时,此编码用于 C.SSPOPCHK x5;Zicfiss 未实现或未激活时恢复基础 Zcmop 行为。

快速理解与检索要点

c.mop.5 无显式操作数。区分基础 Zcmop 的不写寄存器行为与已激活 Zicfiss 的 C.SSPOPCHK x5 重定义。

Zcmop 只定义奇数编号 1..15 的八个 C.MOP.n。
C.MOP.5 的固定 16 位编码是 0110001010000001;x5 是可由重定义使用的隐含寄存器,不是显式操作数。
默认行为与 Zimop MOP.R.n 不同,后者默认写 0 到 rd。
Zicfiss 已实现且激活时,此编码用于 C.SSPOPCHK x5,并展开为 SSPOPCHK x5;未实现或未激活时恢复 Zcmop 行为。

常见使用场景

Zcmop May-Be-Operations

结合 «c.mop.5» 等实际代码理解该场景。

扩展定义的行为

结合 «c.mop.5» 等实际代码理解该场景。

使用前检查清单

语法检查
  • 推荐语法 c.mop.5 没有显式操作数;16 位编码固定为 0110001010000001,没有可变寄存器或立即数字段。
语义检查
  • Zcmop 1.0 依赖 Zca;基础行为不写任何寄存器,隐含 x5 可由重定义使用。
  • Zicfiss 已实现且在当前特权模式激活时,此编码用于 C.SSPOPCHK x5;否则恢复基础 Zcmop 行为。

容易混淆 / 常见误区

基础 Zcmop 的 C.MOP.n 不写任何寄存器;这与 Zimop 的 MOP.R/MOP.RR 默认写 0 到 rd 不同。
不要在普通软件中依赖 C.MOP 具有有用效果,除非目标扩展明确重定义该编码。
不要把基础 Zcmop 的行为套用到已激活的 Zicfiss:该扩展用此编码执行 C.SSPOPCHK x5。

常见问题

C.MOP.5 默认会写寄存器吗?

不会。官方 Zcmop 说明 C.MOP.n 默认不写任何寄存器。

C.MOP.5 的隐含寄存器是什么?

x5,可由重定义读取。Zicfiss 已实现且激活时,该编码用于 C.SSPOPCHK x5;否则恢复基础 Zcmop 行为。