問(wèn)題:
我發(fā)現(xiàn)下面的函數(shù)不能生成正確的CRC16結(jié)果,調(diào)試發(fā)現(xiàn),
雖然進(jìn)行了強(qiáng)制類型轉(zhuǎn)換unsigned char *code = (unsigned char *)data;
但是對(duì)code++;仍舊對(duì)指針移動(dòng)的4字節(jié)。
是由于SHARC的架構(gòu)支持的最小尋址單位是32bit??
還是CCES生成的代碼問(wèn)題?如果使用匯編做基址變址尋址是否可以尋址到字節(jié)呢?
unsigned short int CRC16_Table(void *data,unsigned char len)
{
unsigned char *code = (unsigned char *)data;
unsigned short int crc16 = 0xFFFF;
unsigned char crcregister;
unsigned char data0;
for( ; len > 0; len--)
{
crcregister = (crc16 >> 8) & 0x000000FF;
crc16 = (crc16 << 8) & 0x0000FF00;
data0 = (*(unsigned char *)code)&0x000000FF;
crc16 = (crc16 ^ crc16_tab[(crcregister ^ ((*code)&0x000000FF)) & 0x000000FF]) & 0x0000FFFF;
(unsigned char *)code++;
}
return(crc16);
}
答:
SHARC 支持的數(shù)據(jù)類型CHAR,SHORT INT, INT 都是32位的。
具體你可以參看SHARC 的compiler手冊(cè)。