RV64 上 C.LW 会零扩展吗?
不会;它与 LW 一样把加载的 32 位字符号扩展到 XLEN。
从内存加载 32 位字并符号扩展到 XLEN 后写入 rd'。CL格式。
扩展条件:RV32C / RV64C;本页按 C 扩展版本 2.0 说明。
C.LW (CL格式,rd'和rs1'仅限x8-x15)从 rs1' 加零扩展、按 4 字节缩放偏移形成的地址加载 32 位字,并符号扩展到 XLEN 后写入 rd'。展开为 lw rd',offset(rs1');偏移范围为 0-124 字节。
三个学习步骤展示架构规则;不表示处理器流水线或周期。
RV32C / RV64C;C 扩展下 IALIGN=16,PC 为偶数字节地址。地址计算按 XLEN 回绕。 示例假定该内存访问获 EEI 允许;非自然对齐时才应用所选 EEI 结果,自然对齐不保证没有其他访问异常。
c.lw → x8 ← 0xFFFFFFFFFFFFFF80; PC ← 0x0000000000001002
0x4900
尚未提交架构结果。
C.LW 使用 CL 格式,rs1' 加零扩展且按 4 缩放的偏移形成地址,加载字后符号扩展到 XLEN。
结合 «c.lw x8, 0(x10) # RV64C; x10=0x2000; EEI permits mem32[0x2000]=0xFFFFFF80 -> x8=0xFFFFFFFFFFFFFF80» 等实际代码理解该场景。
不会;它与 LW 一样把加载的 32 位字符号扩展到 XLEN。