它一定等价于同名 32 位指令吗?
不一定。有些 C/Zc 指令是常见 32 位指令的压缩形式,有些有专门的栈帧或查表语义。
Zcb 的 16 位乘法:对两个有符号 XLEN 操作数相乘,并写回乘积低 XLEN 位。
C.MUL(Zcb,CA 格式)将 rsd' 与 rs2' 作为有符号 XLEN 值相乘,并把乘积低 XLEN 位写回 rsd'。两个压缩寄存器都限于 x8-x15;Zcb 依赖 Zca,且还必须配置 M 或 Zmmul。
仅显示 ISA 可见的 16 位编码、操作数和状态,不表示流水线、缓存或时序。
继续到“提交结果”以显示架构状态。
C.MUL 的两个 CA 压缩寄存器字段映射到 x8-x15;结果只保留有符号乘积的低 XLEN 位。
结合 «c.mul x10, x11 # x10 = (x10 * x11)[XLEN-1:0]» 等实际代码理解该场景。
不一定。有些 C/Zc 指令是常见 32 位指令的压缩形式,有些有专门的栈帧或查表语义。
许多 16 位编码只能表示压缩寄存器子集或固定寄存器,如 sp、ra、a0/a1。