You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询RISC-V汇编立即数表示格式规范及伪指令相关文档

RISC-V LUI指令两种写法解析

lui t0,%hi(string1)是否为伪指令

不是伪指令,%hi()是汇编器提供的立即数修饰符,本质是让汇编器在编译阶段计算符号string1地址的高20位,再把该数值作为LUI指令的立即数参数。LUI本身是硬件原生支持的真实指令,这种写法只是借助汇编器的符号地址计算能力,不属于需要被替换为真实指令序列的伪指令(比如li这类才是伪指令)。

两种写法的原理

  • lui t0, 0:直接将立即数0的高20位加载到t0的高20位,寄存器低12位被清零,最终t0的值为0。这是LUI指令最基础的直接指定立即数用法,完全符合LUI的硬件定义——将20位立即数放入目标寄存器的高20位,低12位固定为0。
  • lui t0,%hi(string1):%hi()是RISC-V汇编的标准语法,作用是提取符号(如字符串、全局变量)内存地址的高20位。汇编器会先算出string1的完整32位内存地址,截取高20位作为LUI的立即数加载到t0的高20位。通常这种写法会搭配addi t0, t0, %lo(string1)使用,组合完成完整32位地址的寄存器加载,这是RISC-V中访问全局符号地址的标准方式。

相关文档说明

RISC-V官方的《RISC-V Assembly Programmer's Manual》(汇编程序员手册)明确规定了%hi()、%lo()这类立即数修饰符的用法,同时也定义了LUI指令的硬件行为。另外,GAS、LLVM MC等主流RISC-V汇编器的官方文档,也会详细说明这些修饰符的具体实现逻辑,以及如何与LUI、ADDI等指令配合使用。

内容的提问来源于stack exchange,提问作者UnicornsOnLSD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:32:35