[ZLG-ARM] 奇怪,ADS编译的有问题了??

[复制链接]
2672|1
 楼主| gaowenbiao 发表于 2007-5-14 09:34 | 显示全部楼层 |阅读模式
近来碰到了一个很奇怪的问题,switch语句竟然能编译出除数为0的情况,而且进入到除数为0错误里面出不来了!!以下是C和编译出来的汇编程序,有没有高手碰到过类似的问题??<br />C程序:<br />void&nbsp;User_28_Key(uint8&nbsp;keyvalue)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint32&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;switch(keyvalue)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;LEFT:if((pPage.ColorFlag==0)||(pPage.ColorFlag==1))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPage.ColorFlag&nbsp;=&nbsp;9;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPage.ColorFlag--;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;RIGHT:if(pPage.ColorFlag==9)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPage.ColorFlag&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPage.ColorFlag++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;UP:&nbsp;&nbsp;&nbsp;&nbsp;if(pPage.ColorFlag==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPage.CurrentPage--;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPage.NumFlag&nbsp;=&nbsp;0;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;Pow[9-pPage.ColorFlag];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Diandu[pPage.NumFlag]/temp%10==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Diandu[pPage.NumFlag]&nbsp;+=&nbsp;9*temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Diandu[pPage.NumFlag]&nbsp;-=&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;DOWN:if(pPage.ColorFlag==0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPage.CurrentPage&nbsp;=&nbsp;USER_NO+1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPage.NumFlag&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;Pow[9-pPage.ColorFlag];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Diandu[pPage.NumFlag]/temp%10==9)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Diandu[pPage.NumFlag]&nbsp;-=&nbsp;9*temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Diandu[pPage.NumFlag]&nbsp;+=&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;ESC:&nbsp;&nbsp;&nbsp;&nbsp;pPage.PrePage&nbsp;=&nbsp;pPage.CurrentPage;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPage.CurrentPage&nbsp;=&nbsp;OTHER_NO;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPage.NumFlag&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPage.ColorFlag&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;ENTER:if(pPage.NumFlag==7)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPage.NumFlag&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPage.NumFlag++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pPage.ColorFlag&nbsp;=&nbsp;0&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;default:&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />以下是编译出来的汇编程序:<br />[0xe92d4ff8]&nbsp;&nbsp;&nbsp;stmfd&nbsp;&nbsp;&nbsp;&nbsp;r13!,{r3-r11,r14}<br />[0xe59f9660]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r9,0x800199c0&nbsp;;&nbsp;=&nbsp;#0x8003b498<br />[0xe59f9660]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r9,0x800199c4&nbsp;;&nbsp;=&nbsp;#0x8101329e<br />[0xe596500c]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r5,[r6,#0xc]<br />[0xe1a0b000]&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r11,r0<br />[0xe59fa650]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r10,0x800199c0&nbsp;;&nbsp;=&nbsp;#0x8003b498<br />[0xe5964008]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r4,[r6,#8]<br />[0xe2658009]&nbsp;&nbsp;&nbsp;rsb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r8,r5,#9<br />[0xe7990108]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[r9,r8,lsl&nbsp;#2]<br />[0xeb000757]&nbsp;&nbsp;&nbsp;bl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__rt_udiv&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)<br />[0xeb000757]&nbsp;&nbsp;&nbsp;bl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8001b0e0&nbsp;&nbsp;;&nbsp;(__rt_udiv&nbsp;+&nbsp;0x4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2)<br />[0xeb000796]&nbsp;&nbsp;&nbsp;bl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8001b1e0&nbsp;&nbsp;;&nbsp;(__rt_udiv10&nbsp;+&nbsp;0x4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3)<br />[0xe1a07001]&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r7,r1<br />[0xe3a01000]&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,#0<br />[0xe5960000]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[r6,#0]<br />[0xe35b0006]&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r11,#6<br />[0x908ff10b]&nbsp;&nbsp;&nbsp;addls&nbsp;&nbsp;&nbsp;&nbsp;pc,pc,r11,lsl&nbsp;#2<br />[0xea00000b]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193cc&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x7c)<br />[0xea00000b]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193d0&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x80)<br />[0xea000004]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193b8&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x68)<br />[0xea00000d]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193e0&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x90)<br />[0xea00003a]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x80019498&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x148)<br />[0xea00003f]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800194b0&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x160)<br />[0xea000012]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x80019400&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0xb0)<br />[0xea000024]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8001944c&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0xfc)<br />[0x0a000001]&nbsp;&nbsp;&nbsp;beq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193c4&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x74)<br />[0x0a000001]&nbsp;&nbsp;&nbsp;beq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193c8&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x78)<br />[0xe3550001]&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r5,#1<br />[0x1a000002]&nbsp;&nbsp;&nbsp;bne&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193d4&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x84)<br />[0xe3a00009]&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,#9<br />[0xe586000c]&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[r6,#0xc]<br />[0xe8bd8ff8]&nbsp;&nbsp;&nbsp;ldmfd&nbsp;&nbsp;&nbsp;&nbsp;r13!,{r3-r11,pc}<br />[0xe2450001]&nbsp;&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r5,#1<br />[0xeafffffb]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193cc&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x7c)<br />[0xeafffffb]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193d0&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x80)<br />[0xe3550009]&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r5,#9<br />[0x1a000002]&nbsp;&nbsp;&nbsp;bne&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193f4&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0xa4)<br />[0xe3a00001]&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,#1<br />[0xe586000c]&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[r6,#0xc]<br />[0xeafffff6]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193d0&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x80)<br />[0xe2850001]&nbsp;&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r5,#1<br />[0xeafffff3]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193cc&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x7c)<br />[0xeafffff3]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193d0&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x80)<br />[0xe3550000]&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r5,#0<br />[0x1a000003]&nbsp;&nbsp;&nbsp;bne&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x80019418&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0xc8)<br />[0xe2400001]&nbsp;&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#1<br />[0xe5860000]&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[r6,#0]<br />[0xe5861008]&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,[r6,#8]<br />[0xeaffffed]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193d0&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x80)<br />[0xe79a6104]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r6,[r10,r4,lsl&nbsp;#2]<br />[0xe79a6104]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r6,[r10,r4,lsl&nbsp;#2]<br />[0xe1a00005]&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r5<br />[0xeb0006c4]&nbsp;&nbsp;&nbsp;bl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8001af3c&nbsp;&nbsp;;&nbsp;(__rt_divtest&nbsp;+&nbsp;0x4)<br />[0xe3570000]&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r7,#0<br />[0x1a000003]&nbsp;&nbsp;&nbsp;bne&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x80019440&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0xf0)<br />[0xe0850185]&nbsp;&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r5,r5,lsl&nbsp;#3<br />[0xe0860000]&nbsp;&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r6,r0<br />[0xeaffffe3]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193cc&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x7c)<br />[0xeaffffe3]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193d0&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x80)<br />[0xe0460005]&nbsp;&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r6,r5<br />[0xe78a0104]&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[r10,r4,lsl&nbsp;#2]<br />[0xeaffffe0]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193d0&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x80)<br />[0xe3550000]&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r5,#0<br />[0x1a000003]&nbsp;&nbsp;&nbsp;bne&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x80019464&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x114)<br />[0xe3a00010]&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,#0x10<br />[0xe5861008]&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,[r6,#8]<br />[0xe5861008]&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,[r6,#8]<br />[0xeaffffda]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193d0&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x80)<br />[0xe7995108]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r5,[r9,r8,lsl&nbsp;#2]<br />[0xe79a6104]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r6,[r10,r4,lsl&nbsp;#2]<br />[0xe1a00005]&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r5<br />[0xeb0006b1]&nbsp;&nbsp;&nbsp;bl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x8001af3c&nbsp;&nbsp;;&nbsp;(__rt_divtest&nbsp;+&nbsp;0x4)<br />[0xe3570009]&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r7,#9<br />[0xe0850185]&nbsp;&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r5,r5,lsl&nbsp;#3<br />[0xe0850185]&nbsp;&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r5,r5,lsl&nbsp;#3<br />[0xe0460000]&nbsp;&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r6,r0<br />[0xe78a0104]&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[r10,r4,lsl&nbsp;#2]<br />[0xeaffffd0]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193d0&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x80)<br />[0xe0860005]&nbsp;&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r6,r5<br />[0xe78a0104]&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[r10,r4,lsl&nbsp;#2]<br />[0xeaffffcd]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193d0&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x80)<br />[0xe3a0003f]&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,#0x3f<br />[0xe3a0003f]&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,#0x3f<br />[0xe5860000]&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[r6,#0]<br />[0xe5861008]&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,[r6,#8]<br />[0xe586100c]&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,[r6,#0xc]<br />[0xeaffffc7]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193d0&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x80)<br />[0xe3540008]&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r4,#8<br />[0x1a000001]&nbsp;&nbsp;&nbsp;bne&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800194c0&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x170)<br />[0xea000001]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800194c4&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x174)<br />[0xea000001]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800194c8&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x178)<br />[0xe2840001]&nbsp;&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r4,#1<br />[0xe5860008]&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[r6,#8]<br />[0xe586100c]&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,[r6,#0xc]<br />[0xeaffffbf]&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x800193d0&nbsp;&nbsp;;&nbsp;(User_28_Key&nbsp;+&nbsp;0x80)<br />[0xe92d4070]&nbsp;&nbsp;&nbsp;stmfd&nbsp;&nbsp;&nbsp;&nbsp;r13!,{r4-r6,r14}<br />[0xe51feaac]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r14,0x80018a30&nbsp;;&nbsp;=&nbsp;#0x000001b6<br />[0xe59e000c]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[r14,#0xc]<br />[0xe59e000c]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[r14,#0xc]<br />[0xe3e01003]&nbsp;&nbsp;&nbsp;mvn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,#3<br />[0xe59f44dc]&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r4,0x800199c8&nbsp;;&nbsp;=&nbsp;#0x00000313<br />[0xe0812100]&nbsp;&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r2,r1,r0,lsl&nbsp;#2<br />[0xe1d410b0]&nbsp;&nbsp;&nbsp;ldrh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,[r4,#0]<br />[0xe3a05001]&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r5,#1<br />[0xe1a03215]&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r3,r5,lsl&nbsp;r2<br />[0xe1a0c231]&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r12,r1,lsr&nbsp;r2<br />[0xe1a0c231]&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r12,r1,lsr&nbsp;r2<br />[0x908ff106]&nbsp;&nbsp;&nbsp;addls&nbsp;&nbsp;&nbsp;&nbsp;pc,pc,r6,lsl&nbsp;#2<br /><br /><br />怎么会编译出(1),(2),(3)这三步呢??还有几个函数跟上述函数类似,都没有这样的问题,就这个函数是这样的,真的很奇怪,左看右看,都没有什么问题啊,找了一两天了,高手请赐教!!<br />
zlgARM 发表于 2007-5-14 22:37 | 显示全部楼层

gaowenbiao

注意加一下括号吧,不要依赖编译器设定的优先级。<br />同时我们都知道用变量做除数的话,必须检查它是不是为0的,您也应该检查。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

16

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部