Я пишу ядро, и мне нужно самостоятельно переместиться выше 0x7FFFFFFF. Для этого мне нужно сослаться, используя абсолютную адресацию, на начало и конец моего ядра и на символ, где выполнение продолжается после перемещения. Я не смог найти способ сделать это. Можно ли это сделать? Есть ли обходной путь?
Как я могу загрузить абсолютный адрес символа больше 0x7FFFFFFF в сборке RiscV64
Ответы (1)
Единственный способ, который я нашел, - это взять адрес загрузки и вычесть его из адреса назначения. Затем вы можете добавить это смещение к любому относительному адресу, чтобы получить абсолютный адрес.
person
Topi Karvonen
schedule
21.12.2020
lui
иaddi
и%lo
и%hi
, если вы используете gnu binutils. См. руководство. - person Jester   schedule 21.12.2020%hi
и%lo
делают правильные вещи, чтобы получить правильный результат. - person Jester   schedule 21.12.2020