C.NOP

RISC-V C.NOP 指令详解

指令手册CI format

固定 16 位空操作。CI 格式;相邻的 rd=x0、imm≠0 编码是 HINT。

指令语法

c.nop
操作数说明
本指令为 CI format 格式,请根据汇编语法确认各操作数位置。
C压缩指令

指令行为说明

C.NOP 是固定的 CI 格式编码:rd=x0、imm=0。它不改变任何用户可见状态,例外是推进 pc 并递增适用的性能计数器;它展开为 nop。共享 C.ADDI 空间中 rd=x0 且 imm≠0 的相邻编码是 HINT,而不是 C.NOP。

C.NOP 指令解析与执行动画

按实际 CR 或 CI 16 位编码解码,并分清普通指令、HINT 与共享编码。

当前步骤

步骤 1:识别固定的 C.NOP 编码

动画直接展示 C 扩展的 16 位字段,而不是把它伪装成 32 位标量指令。

C.NOP 的 CI 编码固定为 0x0001:funct3=000、imm[5]=0、rd=x0、imm[4:0]=00000、op=01。它没有可编辑操作数。
16 位编码
0x0001 = 0000000000000001
funct3 [15..13]
000
imm[5] [12]
0
rd [11..7]
00000
imm[4:0] [6..2]
00000
op [1..0]
01
操作数与计算
funct3=000, imm[5:0]=000000, rd=x0, op=01
固定 CI 编码;没有通用寄存器写回。
pc ← pc + 2
解码结果与架构状态
C.NOP

C.NOP 不改变用户可见状态;例外是推进 pc,并递增适用的性能计数器。

动画只展示官方定义的解码、寄存器读取、算术和架构状态,不表示实现的流水线、缓存、预测或时序。

常见使用场景

特定用途

结合 «c.nop # 16-bit no-operation» 等实际代码理解该场景。

缓存与提示

结合 «c.nop # 16-bit no-operation» 等实际代码理解该场景。

使用前检查清单

语法检查
  • 确认当前指令格式为 CI format。
  • 确认操作数排列顺序与示例一致。
语义检查
  • 确认目标寄存器用途和调用约定兼容。
  • 确认该指令不是伪指令展开后的底层形式。

容易混淆 / 常见误区

imm!=0时作HINT使用