Привет!
Обнаружил ошибку в работе компилятора PICC-18 (v8.30), при использовании "signed char" в качестве индекса к массиву:
char buf [ 256 ] ;
void func () { signed char indx ; buf [ indx ] ++ ; }
Executing: "C:\Tools\HT-PIC18\BIN\PICC18.EXE" -C -E"communication.cce" "communication.c" -O"communication.obj" -Q -MPLAB -18F6621 -D32 -FDOUBLE -Zg9
-O -D32 -ASMLIST
622 003244 50D9 movf fsr2l,w,c 623 003246 EE0D F0F9 lfsr 0,_buf 624 00324A 26E9 addwf fsr0l,f,c 625 00324C 0E00 movlw 0 626 00324E 22EA addwfc fsr0h,f,c 627 003250 2AEF incf indf0,f,c 629 003252 0012 returnВ коде отсутствует раширение знака на старший байт. Я поэкспериментировал, скажем если к индексу добавить смещение (даже ноль), то расширение знака появляется, если использовать в качестве индекса глобальную переменную, опять пропадает. Причём на самом то деле выгоднее всего было бы просто использовать адресацию plusw:
movf fsr2l,w,c lfsr 0,_buf incf plusw0,f,c return
Если кому-нибудь из зарегистированных пользователей не лень, киньте баг-репорт HI-TECH.
Александр Голов, Москва, snipped-for-privacy@mail.ru