реклама на сайте
подробности

 
 
> Вопрос по ассемблеру ARM, Не пойму как расчитывается смещение
NeDoEng
сообщение May 17 2016, 09:26
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 17-04-16
Пользователь №: 91 333



Вот, например, запускаю симулятор и смотрю дизассемблер startup_stm32f10x_md.s

Строку 133: LDR R0, =SystemInit
компилятор разворачивает в строку:

0x0800016C 4809 LDR r0,[pc,#36] ; @0x08000194
Это значит, что будет загружено в R0 значение из памяти по адресу PC+36. И в данный момент PC = 0x0800016C.

НО!
0x0800016C+36 = 0x08000190. Хотя компилятор в комментарии указывает другой адрес - на 4 байта больше. И в самом деле обращение идет по адресу 0x08000194. Как получилась такая разница? Сначала инкрементируется счетчик команд на 4 (переход к след. команде), а потом выполняется сложение и пр?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 17:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01353 секунд с 7
ELECTRONIX ©2004-2016