此ARM代码的C代码

时间:2013-05-14 19:51:07

标签: c arm

您可以帮助我获取此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 ...

1 个答案:

答案 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,用于减少此特定情况的代码大小。

相关问题