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

[复制链接]
3183|19
 楼主| chenjiancan 发表于 2015-3-12 09:54 | 显示全部楼层 |阅读模式
本帖最后由 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。

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
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 版本兼容的问题?
你另外那个帖子的问题解决了吗?
 楼主| chenjiancan 发表于 2015-3-12 14:40 | 显示全部楼层
dirtwillfly 发表于 2015-3-12 14:04
有没有可能还是开发环境版本和 z stack 版本兼容的问题?
你另外那个帖子的问题解决了吗? ...

不是工程版本的问题,我是想如果实在没法解决才用旧版软件,因为工程是新版的,以后会向前更新。
 楼主| chenjiancan 发表于 2015-3-12 14:41 | 显示全部楼层
dirtwillfly 发表于 2015-3-12 14:04
有没有可能还是开发环境版本和 z stack 版本兼容的问题?
你另外那个帖子的问题解决了吗? ...

这个工程已经是裸机工程了,代码就几百Byte
dirtwillfly 发表于 2015-3-12 14:58 | 显示全部楼层
chenjiancan 发表于 2015-3-12 14:41
这个工程已经是裸机工程了,代码就几百Byte

能都把工程文件传上来?
gaoyang9992006 发表于 2015-3-12 15:04 | 显示全部楼层
我刚刚下载完了EW8051-9103-Autorun,一会儿安装测试,你把文件传来。
 楼主| chenjiancan 发表于 2015-3-12 15:24 | 显示全部楼层
gaoyang9992006 发表于 2015-3-12 15:04
我刚刚下载完了EW8051-9103-Autorun,一会儿安装测试,你把文件传来。

ok
mintspring 发表于 2015-3-12 17:56 | 显示全部楼层
楼主,搞好了,不过我不知道怎么看汇编代码啊,我好久没有用这个了。
mintspring 发表于 2015-3-12 17:56 | 显示全部楼层
教教我白,我看你们讨论半天了,来个帖子讲讲如何看IAR的反汇编代码。
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 赞一个!

查看全部评分

gaoyang9992006 发表于 2015-3-12 18:38 | 显示全部楼层
楼主,这个是我用EW8051-9103-Autorun,编译得到的list文件,没有问题啊,跟你那个老版本一样,你也去下载这个最新版吧。很OK的。
gaoyang9992006 发表于 2015-3-12 18:45 | 显示全部楼层
有问题,我们再一起交流啊,你好有心啊,我都从不看反汇编:lol
dirtwillfly 发表于 2015-3-12 20:39 | 显示全部楼层
hnkf118 发表于 2015-3-12 23:34 | 显示全部楼层
如果你真考虑移植问题的话 建议你换一种方式,也多不了几个代码

for (i=0; i<8; i++) {
    if ( getbit(cmd, i) ) {
       DI = 1;
    } else {
      DI = 0;
   }
}
罗菜鸟 发表于 2015-3-13 01:00 | 显示全部楼层
IAR设置有木有问题?
seanfan 发表于 2015-7-5 17:09 | 显示全部楼层
请问EW8051-9103-Autorun在哪儿能下载到?有没有**文件呢?谢谢
Thor9 发表于 2015-7-7 19:56 | 显示全部楼层
可能还是开发环境版本和 z stack 版本兼容的问题
FireRiver9 发表于 2015-7-7 21:04 | 显示全部楼层
反汇编啊,一般什么时候用他
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

31

帖子

0

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