RV64 上 C.LWSP 会零扩展吗?
不会。它展开为 lw,加载的 32 位字会符号扩展到 XLEN。
从栈指针+偏移加载32位字。CI格式。rd!=x0。
C.LWSP 使用 CI 格式,从 sp(x2) 加零扩展且按 4 缩放的偏移加载 32 位字到 rd。它展开为 lw rd, offset(x2):在 RV64 上该字会符号扩展到 XLEN。仅 rd≠x0 有效;rd=x0 的编码保留。偏移范围为 0-252 字节。
只展示 RISC-V ISA 可见的 16 位编码、操作数和状态;不模拟流水线、缓存、端序实现或时序。
仅当有效地址不是 4 的倍数时,此 EEI 选项才影响结果;自然对齐访问不得引发地址未对齐异常。
x10 <- 0xFFFFFFFFFFFFFF80
C.LWSP 把 x2/sp 加上 0-252 的 4 字节倍数偏移;它等价于 lw,因此 RV64 上会把 32 位加载值符号扩展到 XLEN。
结合 «c.lwsp x10, 16(sp) # x10 = *(sp+16)» 等实际代码理解该场景。
不会。它展开为 lw,加载的 32 位字会符号扩展到 XLEN。