gpt4 book ai didi

c - 将地址作为符号加载到通用寄存器中

转载 作者:太空宇宙 更新时间:2023-11-04 01:52:36 27 4
gpt4 key购买 nike

我在 crt.S 文件中有一些 RISC V 程序集。

如果我像这样使用 C 函数 _init 的名称:

j _init

(即执行无条件跳转到 _init),代码可以正常编译并运行。

但是如果我这样使用它:

li a3, _init

(即,用整数值_init 加载通用寄存器A3)代码将不会编译。如果我替换为文字整数值(例如,0x80001958,在所有其他条件相同的情况下,它是当前 _init 的值)代码编译。

我在这里做错了什么? (这是使用 GNU GCC/AS)

最佳答案

答案是——由于 RISCV 支持多种地址格式——我不能使用 li,因此假设地址格式与寄存器格式大小相同。相反,我必须使用 la 加载适当扩展为地址格式而不是整数寄存器格式的数字。

关于c - 将地址作为符号加载到通用寄存器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40619791/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com