【发布时间】:2021-11-09 09:33:29
【问题描述】:
我有以下几行
la x14, L2
sw x13, 0(x14)
其中L2的地址是0x2018。
当我生成 ELF 文件并使用 objdump 检查它时,我看到的是(仅相关部分):
...
1018: auipc a4,0x1
101c: mv a4,a4
1020: sw a3,0(a4) # 2018 <L2>
...
1018 处的行,即mv a4 a4 转换为addi a4, a4, 0,这是多余的。为什么会产生这个?如果没有这条线,它仍然可以工作吗?
gcc 是否要求始终为 la 指令生成 2 条指令?
【问题讨论】: