如何在 RiscV64 程序集中加载大于 0x7FFFFFFF 的符号的绝对地址

How can I load the absolute address of a symbol larger than 0x7FFFFFFF in RiscV64 assembly

我正在编写内核,我需要自行重新定位到 0x7FFFFFFF 以上。为此,我需要使用绝对寻址来引用我的内核的开头和结尾以及一个符号,在重定位后继续执行。我一直想不出任何方法来做到这一点。可以吗?有解决方法吗?

我找到的唯一方法是获取加载地址并从目标地址中减去它。然后,您可以将此偏移量添加到任何相对地址以获得绝对地址。