0x80 会加载为负数吗?
不会。它是零扩展字节加载;成功加载 0x80 后,RV32 得到 0x00000080,RV64 得到 0x0000000000000080。
RV32/RV64 Zcb:从 rs1'+0–3 字节偏移加载字节,零扩展到 XLEN 后写入 rd';寄存器均限 x8–x15。
C.LBU(Zcb 1.0.0,依赖Zca,CLB)用于RV32/RV64。rd'与rs1'均限x8–x15;基址加零扩展字节偏移0–3形成地址,成功加载字节零扩展到XLEN写rd'。等价lbu rd', uimm(rs1')。字节自然对齐,地址可访问性仍由EEI决定。
展示 16 位编码、操作数、计算和架构结果。
RV32/RV64, Zcb (requires Zca)
16 位编码字段
RV32/RV64 Zcb:从 rs1'+0–3 字节偏移加载字节,零扩展到 XLEN 后写入 rd';寄存器均限 x8–x15。
RV32/RV64 Zcb,x10=0x2000、mem[0x2001]=0x80 且访问成功:c.lbu x9, 1(x10) 得到 x9=0x80,高位均为零。
RV32/RV64 Zcb,x10=0x2000、mem[0x2001]=0x80 且访问成功:c.lbu x9, 1(x10) 得到 x9=0x80,高位均为零。
不会。它是零扩展字节加载;成功加载 0x80 后,RV32 得到 0x00000080,RV64 得到 0x0000000000000080。
偏移是 0–3 的无符号字节值。字节访问自然对齐,但地址是否合法或可访问仍取决于 EEI。