Здравствуйте, недавно начал разбираться в архитектуре ARM процессоров.
Изучал описание по
этому адресу, а также на
www.gaw.ru.
собственно мой вопрос заключается вот в чём:
Цитата
Если подразумевается переход на инструкцию ARM режима, все команды которого хранятся по адресам кратным 4, два самых младших разряда адреса должны быть 0, иначе результат непредсказуем.
При чтении регистра R15 в ARM режиме, в регистр результата попадает значение, равное: адресу команды чтения + 8.
thisAddr: MOV R1,R15 ; R1:= R15+8 (thisAddr+8)
Если регистр R15 указывает на инструкцию, которая должна выполнятся после текущей инструкции, то почему при чтении происходит смещение на 8?
аналогичный вопрос про запись:
Цитата
Исключением из этого правила является сохранение R15 командами STR или STM. Они могут сохранять значение R15 как со смещением 8 подобно остальным инструкциям, либо со смещением 12.
почему смещение происходит на 8 или 12?