C.MOP.1

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

指令手册C-type

Zcmop 16 位 C.MOP.1,基础行为不写寄存器;Zicfiss 激活时此编码用于 C.SSPUSH x1。

指令语法

c.mop.1
操作数说明
推荐语法 c.mop.1 没有显式操作数;16 位编码固定为 0110000010000001。
基础 Zcmop 行为不写寄存器;隐含 x1 只由重定义使用。Zicfiss 激活时此编码用于 C.SSPUSH x1。
ZcmopMay-Be-Operations

指令编码

15..0
0110000010000001

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

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

指令行为说明

C.MOP.1 是 Zcmop 1.0 的无操作数 16 位 may-be-operation,固定编码为 0110000010000001(0x6081)。未被其他扩展重定义时,它不写任何寄存器;编码允许重定义后读取隐含的 x1。Zcmop 依赖 Zca。Zicfiss 已将此编码用于 C.SSPUSH x1;未实现或未激活 Zicfiss 时恢复 Zcmop 行为。本页说明基础 Zcmop 行为。

快速理解与检索要点

C.MOP.1 是无操作数的固定 16 位编码,基础 Zcmop 行为不写寄存器。相同编码在 Zicfiss 激活时用作 C.SSPUSH x1。

Zcmop 只定义奇数编号 1..15 的八个 C.MOP.n。
C.MOP.1 固定编码为 0110000010000001(0x6081),位于 C.LUI x1, 0 对应的保留编码空间;推荐语法无操作数,重定义可读取隐含的 x1。
默认行为与 Zimop MOP.R.n 不同,后者默认写 0 到 rd。
Zicfiss 实现且激活时,此编码是 C.SSPUSH x1;未实现或未激活时恢复 Zcmop 定义的行为。

常见使用场景

Zcmop May-Be-Operations

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

扩展定义的行为

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

使用前检查清单

语法检查
  • 确认 Zcmop 与其依赖的 Zca 可用;C.MOP.1 是无显式操作数的固定 16 位编码 0110000010000001。
语义检查
  • 基础 Zcmop 行为不写寄存器;重定义可读取隐含的 x1。
  • 确认 Zicfiss 是否实现且激活:激活时此编码用于 C.SSPUSH x1,否则恢复 Zcmop 行为。

容易混淆 / 常见误区

默认 C.MOP.n 不写 rd;这与 Zimop 的 MOP.R/MOP.RR 默认写 0 到 rd 不同。
不要在普通软件中依赖 C.MOP 具有有用效果,除非目标扩展明确重定义该编码。
Zicfiss 已将此编码重定义为 C.SSPUSH x1;不要把基础 Zcmop 行为当作激活该扩展后的效果。

常见问题

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

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

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

Zcmop 允许重定义后读取隐含的 x1;Zicfiss 已将此编码用于 C.SSPUSH x1。Zicfiss 未实现或未激活时使用基础 Zcmop 行为。