winnie 发表于 2009-4-25 15:50:18

ccs vs picc

picc的:

#include <pic.h>

__CONFIG(HS&PWRTEN&WDTEN&BOREN&LVPDIS);

#define int8unsigned char
#define int16    unsigned int


void main()
{
   int8 temp1=0,temp2=0;
   int16 temp=0,T=0;
while(1)
{
temp1=1;
temp2=2;
   
*(int8 *)&temp=temp1;
*((int8 *)&temp+1)=temp2;
T=temp;

// temp=make16(temp1,temp2);

}

}

picc:

*(int8 *)&temp=temp1;
*((int8 *)&temp+1)=temp2;

汇编为:
movf temp1,w
movwf temp
movf temp2,w
movwf 0x23

temp 为0x22.0x23
4条指令




-----------------------
ccs的:3.187
#include <16F877A.h>
//#use delay(clock=20000000)
//#fuses NOWDT,HS, NOPROTECT,NOLVP

void main()
{
   int8 temp1=0,temp2=0;
   int16 temp=0,T=0;
while(1)
{
temp1=1;
temp2=2;

*(int8 *)&temp=temp1;
*((int8 *)&temp+1)=temp2;
T=temp;

//temp=make16(temp2,temp1);

}

}
....................*(int8 *)&temp=temp1;
0017:MOVLWtemp
0018:MOVWFFSR
0019:MOVF   temp1,W
001A:MOVWFINDF
....................*((int8 *)&temp+1)=temp2;
001B:MOVLWtemp+1
001C:MOVWFFSR
001D:MOVF   temp2,W
001E:MOVWFINDF

....................temp=make16(temp2,temp1);
0023:MOVF   temp2,W
0024:MOVWFtemp+1
0025:MOVF   temp1,W
0026:MOVWFtemp


-----------

看来picc在它的指针方面有它独到的地方了。结合指针,用picc有可能可以写出汇编级别的代码了.
页: [1]
查看完整版本: ccs vs picc