您可以帮助我获取此ARM代码的C代码:
('...'表示进一步说明)
ADR r1, TABLE
CMP r0, #TABLEMAX
LDRLS pc, [r1,r0,LSL #2]
... ; statementsD
B EXIT
TABLE DCD L0
DCD L1
...
DCD LN
L0 ... ; statements0
B EXIT
L1 ... ; statements1
B EXIT
...
LN ... ; statementsN
EXIT ...
答案 0 :(得分:1)
这是原始C代码中的switch语句,如:
switch (a) {
case 0:
... // statements 0
break;
case 1:
... // statements 1
break;
...
case TABLE_MAX /* (maybe TABLE_MAX -1) */ :
... // statements N
break;
default:
... // statements D
break;
}
其中a = r0。
Thumb-2 ISA中更新版本的ARM体系结构包括“表格分支”指令TBB,TBH,用于减少此特定情况的代码大小。