В одном ассемблерном листинге под ядро ARM926EJ-S обнаружил несколько странных для меня вызовов. Весь код отображается по большим адресам: 0x44000000, например. Оперативная память и периферия тоже вся высоко сидит. Но в коде неоднократно встречаются такие команды: LDR R3, =0xE4D BX R3 То есть переход по адресу очень маленькому. Вряд ли это какая-то ошибка или самодурство компилятора. Что же сие может означать? Даташита нема, а опыт общения с армами у меня ещё не настолько велик.
Ответ
LDR имеет различное значение в зависимости от присваиваемых величин. The LDR pseudo-instruction is used for two main purposes: to generate literal constants when an immediate value cannot be moved into a register because it is out of range of the MOV and MVN instructions. to load a program-relative or external address into a register. The address remains valid regardless of where the linker places the AOF area containing the LDR. Список всех команд
Комментариев нет:
Отправить комментарий