它是用户态普通指令吗?
不是普通用户态加载。它仅在 M-mode、HS-mode,或 hstatus.HU=1 的 U-mode 有效;V=1 时尝试执行会触发 virtual-instruction 异常。
Hypervisor 虚拟机加载:以 rs1 为地址,按 VS/VU 有效特权经过两阶段转换读取字节并符号扩展到 XLEN。
HLV.B 是 H 扩展中对应 LB 的虚拟机加载指令。它没有立即数偏移:rs1 提供显式内存访问的地址。读取的 8 位值符号扩展到 XLEN 后写入 rd(rd=x0 时值丢弃,但加载仍可产生异常或其他副作用)。该指令仅可在 M-mode、HS-mode,或 hstatus.HU=1 的 U-mode 执行;hstatus.SPVP=0 时显式访问使用 VU 有效特权,SPVP=1 时使用 VS 有效特权,并经过 VS-stage 和 G-stage 两阶段地址转换。
展示 HLV.B 的 SYSTEM 编码、特权检查、两阶段转换与符号扩展写回;不模拟页表遍历或 TLB 实现。
该动画仅展示官方定义的架构条件与结果;页表遍历、TLB、缓存和平台异常处理未建模。
HLV.B 是 H 扩展的虚拟机有符号字节加载:以 rs1 为地址、按内存访问的 VS/VU 有效特权经过 VS-stage 与 G-stage 两阶段转换。
结合 «hlv.b a0, (a1)» 等实际代码理解该场景。
结合 «hlv.b a0, (a1)» 等实际代码理解该场景。
结合 «hlv.b a0, (a1)» 等实际代码理解该场景。
不是普通用户态加载。它仅在 M-mode、HS-mode,或 hstatus.HU=1 的 U-mode 有效;V=1 时尝试执行会触发 virtual-instruction 异常。
不带。HLV.B 的地址来自 rs1;它在 SYSTEM R-type 编码中固定 rs2=x0,而不是使用普通 LB 的 12 位 I-type 偏移字段。