amobbs.com 阿莫电子技术论坛

标题: STD 9.60PL2 vs PRO PICC V9.60 [打印本页]

作者: cyberjok    时间: 2008-5-30 12:17
标题: STD 9.60PL2 vs PRO PICC V9.60
STD 9.60PL2 vs PRO PICC V9.60  听说 PRO PICC V9.60 代码要高效许多,哪位有没有PRO PICC V9.60 的破**解-版啊
作者: cyberjok    时间: 2008-6-9 12:14
原来没有人在用啊?~~~~~~~~
作者: phone    时间: 2009-3-2 21:11
没发现高效多少,用了一下PRO,现在又退回STD了。
作者: tsb0574    时间: 2009-3-2 21:55
pro会好点!
作者: snoopyzz    时间: 2009-3-3 16:12
我随便写了一小段C代码,PRO9.60PL5比STD9.60PL2省了8个代码空间,一个寄存器占用
一开始挺高兴,但仔细查了list文件后发现实际上STD9.60PL2比PRO9.60PL5的代码优化效果要好,
只是函数调用上PRO9.60PL5用了call,而STD9.60PL2占用了寄存器保存入口号直接用goto跳来跳去,

如果当函数多级调用时,(极端些,比如PIC16F57/54),显然call是不行的,
pro版的所谓的智能感知优化可能是查觉堆栈没问题,就用了call
-------------------------------------------------------------------
但是某些语句,pro比std却要浪费了代码
比如
switch(n)
{
        case 0:PORTB=0;break;
        case 1:PORTB=1;break;
        case 2:PORTB=2;break;
        case 3:PORTB=3;break;
        case 4:PORTB=4;break;
        case 5:PORTB=5;break;
        case 6:PORTB=6;break;
        case 7:PORTB=7;break;
}
std版编译出来有如下代码
(变量名等我用了字母,实际lst文件中很多是数字,看的烦,有些类似1^0也是我自己加上的^0,比数字方便理解)
MOVF    n,W
BTFSC   STATUS,Z
GOTO    L12
XORLW   1^0
BTFSC   STATUS,Z
GOTO    L13
XORLW   2^1
BTFSC   STATUS,Z
GOTO    L14
....
而pro版编译出来多了一条废语句,如下
MOVF    n,W
XORLW   0          ;这条是废的
BTFSC   STATUS,Z
GOTO    L12
XORLW   1^0
BTFSC   STATUS,Z
GOTO    L13
XORLW   2^1
BTFSC   STATUS,Z
GOTO    L14
....

=============================
同样,还有其它一些语句也会多些类似的废语句,比如
if((u8)(a-b)>=2)
{
        a = 5;
}
具体我就不写了
-------------------------------------------------------
所以表面上看来pro的代码和寄存器占用要比std少,
但是通过其它一些手段换来了,而不是纯粹的语句优化,
相比之下std的语句优化要好一些...
作者: wangjckj    时间: 2009-3-21 12:18
STD版本是标准版本,PRO版本是专业版本,PRO是在STD基础上嵌入了OCG技术。




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4