Почему следующий код ARM устанавливает R0
в 0
после SWI
?
.equ SWI_CheckButton, 0x203
.global _start
.text
_start:
mov R0, #1
swi SWI_CheckButton
Я пытаюсь исправить программу, которая принимает форму
FunctionA:
swi SWI_CheckButton
cmp R0, #1
beq label1
cmp R0, #2
beq lablel2
...
cmp R0, #9
beq label9
label1:
...
label9:
@do work
bal FunctionA
Это запутано в label9
, потому что я хочу, чтобы он запомнил последнюю нажатую клавишу, но swi SWI_CheckButton
сбрасывает R0
в 0
(думаю, если ничего не нажимается).
Проблема в том, что swi 0x203
сбрасывает R0
в 0
, так где я могу найти swi
, который делает то же самое, но не сбрасывает R0
?