Disassembler Keil stm32

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
shevelev_es
Родился
Сообщения: 11
Зарегистрирован: Пт апр 01, 2016 11:31:24

Disassembler Keil stm32

Сообщение shevelev_es »

Подскажите, почему после выполнения строки
0x08000100 4806 LDR r0,[pc,#24] ; @0x0800011C
в регистр R0 оказывается адрес 0х08000BE9
понимаю, что это связано с адресом SystemInit, но почему на единицу больше.
И второе, команда LDR r0,[pc,#24] - должна записать в R0 текущее значение PC+24. В начальный момент PC = 0x08000100. Если прибавить 24, то = 0х08000124, а на 0x08000BE9.

Никак не могу найти информацию. Все справки пишут - записать значение в регистр такой- то, значение PC со смещением. В данном случае смещение 24, а результат 0x08000BE9.

Спасибо!
Вложения
next.png
(109.39 КБ) 440 скачиваний
start.png
(113.4 КБ) 192 скачивания
Реклама
Аватара пользователя
N1X
Нашел транзистор. Понюхал.
Сообщения: 197
Зарегистрирован: Чт май 03, 2012 17:03:35
Откуда: Гомель, Беларусь

Re: Disassembler Keil stm32

Сообщение N1X »

Дело в том, что увеличение регистра PC происходит сразу после выборки команды из памяти. Т.е. PC указывает на следующую инструкцию, а не на текущую.
Реклама
shevelev_es
Родился
Сообщения: 11
Зарегистрирован: Пт апр 01, 2016 11:31:24

Re: Disassembler Keil stm32

Сообщение shevelev_es »

Спасибо. А про смещение - pc, #24, есть возможность пояснить.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Disassembler Keil stm32

Сообщение VladislavS »

Ну что там пояснять то? Чтение по адресу PC+24. Загляни что по адресу 0х0800011С лежит?
Реклама
Эиком - электронные компоненты и радиодетали
Ответить

Вернуться в «ARM»