Страница 1 из 1

Disassembler Keil stm32

Добавлено: Вс апр 14, 2019 18:14:23
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.

Спасибо!

Re: Disassembler Keil stm32

Добавлено: Вс апр 14, 2019 22:57:19
N1X
Дело в том, что увеличение регистра PC происходит сразу после выборки команды из памяти. Т.е. PC указывает на следующую инструкцию, а не на текущую.

Re: Disassembler Keil stm32

Добавлено: Пн апр 15, 2019 17:16:22
shevelev_es
Спасибо. А про смещение - pc, #24, есть возможность пояснить.

Re: Disassembler Keil stm32

Добавлено: Пн апр 15, 2019 17:44:02
VladislavS
Ну что там пояснять то? Чтение по адресу PC+24. Загляни что по адресу 0х0800011С лежит?