switch C语句不能翻译为汇编语言的散转指令

2019-08-12 17:07发布

keil编译软件  switch C语句不能翻译为ARM的散转指令,即便是case后面的常量呈递增等差数列、向大神请教,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
正点原子
1楼-- · 2019-08-12 20:19
什么是散转指令?
草莽
2楼-- · 2019-08-12 20:43
回复【2楼】正点原子:
---------------------------------
PLC_MAIN
LDR     R12,=S_start
;R12=#0x20000200=#S_start
MOV     R11,#STACK0;R11=#STACK0=#0x20000000
MOV     R10,#0x0001;R10=#1
LDR     R0,=PLC_PC_SP
MOV     R1,#0
STR     R1,[R0] 
LDR     R7,=PLC_CODE
PLC_MAIN_NEXT
LDRH    R0,[R7]
LSR     R1,R0,#12;R1=R0>>12

TBH.W   [PC,R1,LSL #1]
branchtable
DCI ((CMD_0 - branchtable)/2)          ;0xxx
DCI ((CMD_1 - branchtable)/2)          ;1xxx
DCI ((LD_   - branchtable)/2)          ;2xxx LD
DCI ((LDI_  - branchtable)/2)          ;3xxx LDI
DCI ((AND_  - branchtable)/2)          ;4xxx AND
DCI ((ANI_  - branchtable)/2)          ;5xxx ANI 
DCI ((OR_   - branchtable)/2)          ;6xxx OR
DCI ((ORI_  - branchtable)/2)          ;7xxx ORI
DCI ((CMD_ERROR - branchtable)/2)      ;8xxx
DCI ((CMD_ERROR - branchtable)/2)      ;9xxx
DCI ((CMD_ERROR - branchtable)/2)      ;Axxx
DCI ((CMD_ERROR - branchtable)/2)      ;Bxxx n
DCI ((OUT_YM  - branchtable)/2)        ;Cxxx OUT_YM
DCI ((SET_YM  - branchtable)/2)        ;Dxxx SET_YM
DCI ((RST_YM  - branchtable)/2)        ;Exxx RST_YM
DCI ((CMD_F  - branchtable)/2)         ;Fxxx
草莽
3楼-- · 2019-08-12 21:28
 精彩回答 2  元偷偷看……
正点原子
4楼-- · 2019-08-12 23:28
回复【3楼】草莽:
---------------------------------
高手。。。
ljchip
5楼-- · 2019-08-12 23:57
楼主找到方法没有?c语言编写程序,编译后产生汇编散转方式,我也很需要。

一周热门 更多>