STD 9.60PL2 vs PRO PICC V9.60

2020-02-10 08:44发布

STD 9.60PL2 vs PRO PICC V9.60  听说 PRO PICC V9.60 代码要高效许多,哪位有没有PRO PICC V9.60 的破**解-版啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
cyberjok
1楼-- · 2020-02-10 09:31
原来没有人在用啊?~~~~~~~~
phone
2楼-- · 2020-02-10 09:52
没发现高效多少,用了一下PRO,现在又退回STD了。
tsb0574
3楼-- · 2020-02-10 14:44
 精彩回答 2  元偷偷看……
snoopyzz
4楼-- · 2020-02-10 17:06
我随便写了一小段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
5楼-- · 2020-02-10 18:51
STD版本是标准版本,PRO版本是专业版本,PRO是在STD基础上嵌入了OCG技术。

一周热门 更多>