SWI
の後に次のARMコードセットをR0
〜0
にするのはなぜですか?SWI設定R0を0
.equ SWI_CheckButton, 0x203
.global _start
.text
_start:
mov R0, #1
swi SWI_CheckButton
私はそれが最後に押されたキーを覚えておきたいので、これは
label9
でめちゃくちゃ取得し、フォーム
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
を取るプログラムを右しようとしている
しかしswi SWI_CheckButton
リセットR0
から0
(私は何も押されていないと思う)。
問題がswi 0x203
リセット0
からR0
そうです、私は同じことを行いますがR0
はリセットされませんswi
を見つけるだろうどこ?
SWIハンドラコードを教えてもらえますか? –
私のプログラムにはないと思う。私はEmbestボードのために書いています。 – Celeritas
一般に、SWIハンドラは、レジスタ値をSWI間で復元するようにレジスタを保存および復元します。あなたのSWIハンドラが何をしているのか分かりません。あなたのソース全体で 'SWI_Handler'を探して、それが存在するかどうかを確認してください。 –