CMP R0,#2 ;是调用func1吗?
MOVEQ R4,#0
;*****其他情况省略
BL JumpTableFunc
stop
MOV R0, #0X18 ;程序结束处理
LDR R1, =0X20026
SWI 0X123456
JumpTableFunc
LDREQU pc,[R3,R4,LSL #2] ;跳转到对应处理函数
JumpTable
DCD func1
DCD func2
DCD func3
DCD func4
func1
..............;第一种可能
MOV PC,LR
;其他函数定义省略
END
我的问题:程序中r0相当于switch(a)中的a,划线的指令把R0和表示入口数目的num比较是不是不对?
2、交换
AREA Sort,CODE,READONLY
ENTRY
start
[U]LDR R3,[R0]
LDR R2,[R0,#4][/U]
BL swap
[U]LDR R3,[R0]
LDR R2,[R0,#4][/U]
stop
MOV R0, #0X18 ;程序结束处理
LDR R1, =0X20026
SWI 0X123456
swap
LDR R0,=src
LDR R3,[R0]
LDR R2,[R0,#4]
STR R2,[R0]
LDR R3,[R0,#4]
MOV PC,LR ;函数返回
AREA Array,DATA,READWRTIE
src DCD 2,4
END
问题:划线部分是不是没用处?swap调用前,R0还没初始化啊
以上是看书的时候两点疑惑,我是新手,望大侠指点!