Как написать инструкцию, которая будет иметь адрес, на который ссылается метка, помещается в регистр?Получение адреса ярлыка в регистр на ARM?
ответ
Существует четыре способа, три документально оформлены по адресу Sourceware's Gnu Assembler manual. Я предполагаю, что лейбл что-то вроде,
target:
.long 0xfeadbeef
adr r0,target
adrl r0,target
ldr r0,=target
sub r0,pc,#(.+8-target)
Первые два очень похожи и генерировать sub r0,pc,#offset
. 3-й ставит длинный в буквальном бассейне и загружает это через ldr r0,[pc,#offset2]
или он может использовать mov
, если ассемблер находит оно может (как правило, выровненную этикетку, как на 0x8000). Последняя версия предназначена для расчета вручную.
Разница между adr
и adrl
происходит от непосредственных операндов. Они 8бит повернуты кратным двум. Таким образом, если адрес далеко, возможно, потребуется выполнить две команды, которые, как правило, будут быстрее, чем вариант с 3-ем ldr
которые получают полный 32 бит с помощью кэша данных или памятей.
См. Также: Relocation in assembler
- 1. предупреждение: получение адреса ярлыка нестандартно
- 2. ARM-сборка: регистр автоинкремента на складе
- 3. POPing адреса в регистр
- 4. Что такое ранний регистр в ARM?
- 5. Получение адреса возврата исключения в ARM Cortex M0
- 6. ARM Assembly, регистр не установлен в 0?
- 7. Как защитить r14 регистр в ARM
- 8. Регистр ARM ожидается при компиляции ядра Android
- 9. Получение начального ярлыка в C#
- 10. Gtkmm получение цвета ярлыка
- 11. Получение верхнего в нижний регистр
- 12. Счетчик программ в ARM-сборке
- 13. Получение адреса метки сборки в C через ARM (с использованием GCC)
- 14. Загрузка адреса, как символа, в общий регистр
- 15. ARM встроенный ассемблер - указать индивидуальный регистр в качестве ограничения
- 16. Arm Ассамблеи Rasperry-Pi: Преобразование строки в верхний регистр
- 17. Как использовать специальный регистр в встроенном ассемблере ARM
- 18. Почему регистр адреса postincrement есть (A0) +
- 19. Получение ярлыка в соответствии с вершиной div
- 20. ARM начальный адрес
- 21. Как написать регистр из модуля ядра Linux (cpu: ARM)
- 22. Как регистр базового адреса получает адрес?
- 23. ARM Assembly - получение следующего символа в цикле
- 24. Почему ARM назначает адреса для таких регистров?
- 25. ARM BLX Инструкция Диапазон (абсолютный)
- 26. Как используется регистр стека и ссылки в процедуре прерывания? (ARM-процессор)
- 27. Получение IP-адреса в PHP
- 28. Получение видимого текста ярлыка из UIScrollView
- 29. Получение IP-адреса в JSP
- 30. AJAX запрос на получение IP-адреса от URL-адреса