发现Keil一个小BUG,不算BUG也算没处理好!

[复制链接]
2869|9
 楼主| wuljia 发表于 2009-5-19 16:12 | 显示全部楼层 |阅读模式
BUG, keil, AC, ov, tc
注意红色代码部分,一个立即数,在后面的汇编语句中,居然给弄成了 P0,
虽然P0的地址是 0x80 ,但也不能这么弄啊!
刚开始看得我一头雾水,这个语句跟P0有啥关系呀!晕了好几分钟!

   385:              tcc[tcwp]=TH2<<7&TL2>>1; 
C:0x078D    E5CD     MOV      A,TH2(0xCD)
C:0x078F    C4       SWAP     A
C:0x0790    33       RLC      A
C:0x0791    33       RLC      A
C:0x0792    33       RLC      A
C:0x0793    5480     ANL      A,#P0(0x80)
C:0x0795    FF       MOV      R7,A
C:0x0796    E5CC     MOV      A,TL2(0xCC)
C:0x0798    C3       CLR      C
C:0x0799    13       RRC      A
C:0x079A    5F       ANL      A,R7
C:0x079B    FF       MOV      R7,A
C:0x079C    745D     MOV      A,#tcc(0x5D)
C:0x079E    254B     ADD      A,tcwp(0x4B)
C:0x07A0    F8       MOV      R0,A
C:0x07A1    A61F     MOV      @R0,0x1F
耕在此行 发表于 2009-5-19 16:33 | 显示全部楼层

呵呵 好像有这么回事

huangqi412 发表于 2009-5-19 17:27 | 显示全部楼层

很正常,用C写的,看反汇编时候大堆大堆这样的代码

只是个立即数,而这个立即数恰好和某个积存器地址数值相同啊什么的话,就会被"宏取代"        不止P0... 也不止是积存器地址... 很多都会
反正,运行结果是不会错的.
McuPlayer 发表于 2009-5-19 22:34 | 显示全部楼层

楼主提的非常好,确实是BUG,至少是瑕疵

因为我有做过几个反汇编器,有部分是专门处理这类的Symbole的替换,要注意寻址方式的对应。
ningling_21 发表于 2009-5-20 07:53 | 显示全部楼层

世界上哪有完美的东西?

有BUG或瑕疵是很正常的事情
HWM 发表于 2009-5-20 08:41 | 显示全部楼层

只是给你一个参考(P0 = 0x80)而已,难道你的脑子还不如电

三块石头 发表于 2009-5-20 18:17 | 显示全部楼层

对就是个参考

不至于算瑕疵吧,直接看后面括号里的数就可以了
jimoom 发表于 2009-5-20 20:10 | 显示全部楼层

!

赶紧学学WINDOWS,打补丁
icecut 发表于 2009-5-21 10:02 | 显示全部楼层

不同意.这不是bug

P0和0x80对于电脑来说是相同的.你何必在这里较真呢
mxh0506 发表于 2009-5-21 10:06 | 显示全部楼层

对Keil那么有意见, 还不换?

您需要登录后才可以回帖 登录 | 注册

本版积分规则

118

主题

265

帖子

0

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