ARM - Ссылка регистрируется в исключении - PullRequest
0 голосов
/ 10 марта 2019

У меня есть этот код для исключения IRQ для моего raspberry pi:

push {r0-r12, lr}

mov r1, r11
str r1, [r0, #GPIO_EVT_STAT0]
ldr r5, =State
ldr r2, [r5]
tst r2, #0x01
streq r12, [r0, #GPIO_OUT_CLR0]
strne r12, [r0, #GPIO_OUT_SET0]
mvn r2, r2
str r2, [r5]

pop  {r0-r12, lr}
subs pc, lr, #0x04

В руководстве ARM сказано, что регистр ссылок (r14) хранится в разных режимах.Поэтому мне не нужно помещать регистр ссылок в стек.Это правильно?

Когда я пытаюсь использовать этот код (такой же, как указано выше, но не нажимая регистр ссылок)

push {r0-r12}

mov r1, r11
str r1, [r0, #GPIO_EVT_STAT0]
ldr r5, =State
ldr r2, [r5]
tst r2, #0x01
streq r12, [r0, #GPIO_OUT_CLR0]
strne r12, [r0, #GPIO_OUT_SET0]
mvn r2, r2
str r2, [r5]

pop  {r0-r12}
subs pc, lr_irq, #0x04

Я получаю эту ошибку во время компиляции:

source/main.s:121: Error: immediate expression requires a # prefix -- `subs pc,lr_irq,#0x04'

Так почему я получаю эту ошибку?Насколько я понимаю, r14 хранится в режиме IRQ, и к банковским регистрам обращаются через нотацию register_mode.

...