打印

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

[复制链接]
1943|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的替换,要注意寻址方式的对应。

使用特权

评论回复
5
ningling_21| | 2009-5-20 07:53 | 只看该作者

世界上哪有完美的东西?

有BUG或瑕疵是很正常的事情

使用特权

评论回复
6
HWM| | 2009-5-20 08:41 | 只看该作者

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

使用特权

评论回复
7
三块石头| | 2009-5-20 18:17 | 只看该作者

对就是个参考

不至于算瑕疵吧,直接看后面括号里的数就可以了

使用特权

评论回复
8
jimoom| | 2009-5-20 20:10 | 只看该作者

!

赶紧学学WINDOWS,打补丁

使用特权

评论回复
9
icecut| | 2009-5-21 10:02 | 只看该作者

不同意.这不是bug

P0和0x80对于电脑来说是相同的.你何必在这里较真呢

使用特权

评论回复
10
mxh0506| | 2009-5-21 10:06 | 只看该作者

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

118

主题

265

帖子

0

粉丝