У меня есть этот код для исключения 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
.