打印

IAR 编译cc 2530 C代码生产的反汇编代码疑问?

[复制链接]
2754|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 chenjiancan 于 2015-3-12 15:26 编辑

各位好:   我使用的开发环境是 IAR for 8051 8.30.3 , 在调试 CC2530F256 如下代码的时候,观察到的反汇编指令如图:

// DI 定义为 P1_1                                                

右边汇编代码显示,一个左移位指令,和赋值语句, 用了这么多条指令,而且调试结果显示 DI = CY 这个赋值不成功(CY=1,但是赋值之后DI=0)
但是我使用 IAR for 8.10 重新测试这段代码发现,如下图, 明显效果比较好。 测试的时候 优化等级都为None。

请问,这是什么问题,有解决的办法吗?  

9291111a.rar

99.73 KB

相关帖子

沙发
dirtwillfly| | 2015-3-12 11:20 | 只看该作者
用IAR for 8.10 调试, DI = CY赋值成功吗?

使用特权

评论回复
板凳
chenjiancan|  楼主 | 2015-3-12 13:25 | 只看该作者
dirtwillfly 发表于 2015-3-12 11:20
用IAR for 8.10 调试, DI = CY赋值成功吗?

旧版成功

使用特权

评论回复
地板
dirtwillfly| | 2015-3-12 14:04 | 只看该作者
有没有可能还是开发环境版本和 z stack 版本兼容的问题?
你另外那个帖子的问题解决了吗?

使用特权

评论回复
5
chenjiancan|  楼主 | 2015-3-12 14:40 | 只看该作者
dirtwillfly 发表于 2015-3-12 14:04
有没有可能还是开发环境版本和 z stack 版本兼容的问题?
你另外那个帖子的问题解决了吗? ...

不是工程版本的问题,我是想如果实在没法解决才用旧版软件,因为工程是新版的,以后会向前更新。

使用特权

评论回复
6
chenjiancan|  楼主 | 2015-3-12 14:41 | 只看该作者
dirtwillfly 发表于 2015-3-12 14:04
有没有可能还是开发环境版本和 z stack 版本兼容的问题?
你另外那个帖子的问题解决了吗? ...

这个工程已经是裸机工程了,代码就几百Byte

使用特权

评论回复
7
dirtwillfly| | 2015-3-12 14:58 | 只看该作者
chenjiancan 发表于 2015-3-12 14:41
这个工程已经是裸机工程了,代码就几百Byte

能都把工程文件传上来?

使用特权

评论回复
8
gaoyang9992006| | 2015-3-12 15:04 | 只看该作者
我刚刚下载完了EW8051-9103-Autorun,一会儿安装测试,你把文件传来。

使用特权

评论回复
9
chenjiancan|  楼主 | 2015-3-12 15:24 | 只看该作者
gaoyang9992006 发表于 2015-3-12 15:04
我刚刚下载完了EW8051-9103-Autorun,一会儿安装测试,你把文件传来。

ok

使用特权

评论回复
10
mintspring| | 2015-3-12 17:56 | 只看该作者
楼主,搞好了,不过我不知道怎么看汇编代码啊,我好久没有用这个了。

使用特权

评论回复
11
mintspring| | 2015-3-12 17:56 | 只看该作者
教教我白,我看你们讨论半天了,来个帖子讲讲如何看IAR的反汇编代码。

使用特权

评论回复
12
gaoyang9992006| | 2015-3-12 18:37 | 只看该作者
                 cmd<<=1;                //先发高      
   \   000012   EE           MOV     A,R6
   \   000013   C3           CLR     C
   \   000014   33           RLC     A
   \   000015   FE           MOV     R6,A
    112                  DI=CY;                               //取最高位               
   \   000016   A2D7         MOV     C,0xd0.7
   \   000018   E4           CLR     A
   \   000019   33           RLC     A
   \   00001A   F8           MOV     R0,A
   \   00001B   A2D7         MOV     C,0xd0.7
   \   00001D   9291         MOV     0x90.1,C
    113                  asm("NOP");
   \   00001F   00           NOP
    114                  DCKI=1;                                 //时钟下降沿,数据被传输
   \   000020   D290         SETB    0x90.0
    115                  cmd=cmd<<1;                         //先发高位       
   \   000022   EE           MOV     A,R6
   \   000023   C3           CLR     C
   \   000024   33           RLC     A
   \   000025   FE           MOV     R6,A
    116                  DI=CY;                               //取最高位       

使用特权

评论回复
评分
参与人数 1威望 +6 收起 理由
dirtwillfly + 6 赞一个!
13
gaoyang9992006| | 2015-3-12 18:38 | 只看该作者
楼主,这个是我用EW8051-9103-Autorun,编译得到的list文件,没有问题啊,跟你那个老版本一样,你也去下载这个最新版吧。很OK的。

使用特权

评论回复
14
gaoyang9992006| | 2015-3-12 18:45 | 只看该作者
有问题,我们再一起交流啊,你好有心啊,我都从不看反汇编:lol

使用特权

评论回复
15
dirtwillfly| | 2015-3-12 20:39 | 只看该作者

使用特权

评论回复
16
hnkf118| | 2015-3-12 23:34 | 只看该作者
如果你真考虑移植问题的话 建议你换一种方式,也多不了几个代码

for (i=0; i<8; i++) {
    if ( getbit(cmd, i) ) {
       DI = 1;
    } else {
      DI = 0;
   }
}

使用特权

评论回复
17
罗菜鸟| | 2015-3-13 01:00 | 只看该作者
IAR设置有木有问题?

使用特权

评论回复
18
seanfan| | 2015-7-5 17:09 | 只看该作者
请问EW8051-9103-Autorun在哪儿能下载到?有没有**文件呢?谢谢

使用特权

评论回复
19
Thor9| | 2015-7-7 19:56 | 只看该作者
可能还是开发环境版本和 z stack 版本兼容的问题

使用特权

评论回复
20
FireRiver9| | 2015-7-7 21:04 | 只看该作者
反汇编啊,一般什么时候用他

使用特权

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

本版积分规则

10

主题

31

帖子

0

粉丝