We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
C251 v3.12 The C251 compiler does not handle arithmetic for array indices consistently. Consider
char tt[30] ; char test ; unsigned char aaa = 27 ; unsigned int bbb = 27 ; test = tt[aaa - 20] ; test = tt[bbb - 20] ;
Joel, I got the following:
stmt level source 1 char tt[30] ; 2 char test ; 3 unsigned char aaa = 27 ; 4 unsigned int bbb = 27 ; 5 6 void main (void) 7 { 8 1 9 1 test = tt[aaa - 20] ; 10 1 test = tt[bbb - 20] ; 11 1 12 1 13 1 } 14 15 16 ASSEMBLY LISTING OF GENERATED OBJECT CODE ; FUNCTION main (BEGIN) ; SOURCE LINE # 6 ; SOURCE LINE # 9 000000 7E1100 R MOV R1,aaa 000003 2E1000 R ADD R1,#LOW tt+236 000006 A5E7 MOV A,@R1 ; A=R11 000008 F500 R MOV test,A ; A=R11 ; SOURCE LINE # 10 00000A 7E0500 R MOV WR0,bbb 00000D 9E040014 SUB WR0,#014H 000011 2E1000 R ADD R1,#LOW tt 000014 A5E7 MOV A,@R1 ; A=R11 000016 F500 R MOV test,A ; A=R11 ; SOURCE LINE # 13 000018 22 RET ; FUNCTION main (END)