??? 06/08/11 07:22 Modified: 06/08/11 07:27 Read: times |
#182534 - Compiler variations?? |
I've moved somewhat ahead with my 89S52 based clock using 2x16 LCD & DS1307.
Now that time setting part is in progress, I've found something which I want to share & get myself corrected if there is something wrong with code itself. I've inserted .LST file parts where anomalies were observed. ...========================================================================== 1 ;-------------------------------------------------------- 2 ; File Created by SDCC : free open source ANSI-C Compiler 3 ; Version 3.0.0 #6037 (Oct 31 2010) (MINGW32) ========================================================================== [1] 2442 ; Test9.c:461: if(up_pressed) 0ABE 30 85 99 2443 jnb _P0_5,00144$ 2444 ; Test9.c:463: if(dn_pressed) 0AC1 A2 86 2445 mov c,_P0_6 2446 ; Test9.c:467: dn2: if (dn_pressed) 0AC3 2447 00157$: 0AC3 20 86 63 2448 jb _P0_6,00169$ | || || || || || || [2] 2502 ; Test9.c:483: if(up_pressed) 0B20 20 85 03 2503 jb _P0_5,00303$ 0B23 02s0Ar5A 2504 ljmp 00144$ 0B26 2505 00303$: 2506 ; Test9.c:485: if(dn_pressed) 0B26 30 86 9A 2507 jnb _P0_6,00157$ | || || || || || || [3] 2686 ; Test9.c:540: if(up_pressed) 0C68 30 85 91 2687 jnb _P0_5,00175$ 2688 ; Test9.c:542: if(dn_pressed) 0C6B A2 86 2689 mov c,_P0_6 2690 ; Test9.c:546: dn3: if (dn_pressed) 0C6D 2691 00188$: 0C6D 20 86 6B 2692 jb _P0_6,00200$ | || || || || || || In part[2] if(dn_pressed) gives jnb P0.6 ; which is as expected whereas in part [1] & [3] if(dn_pressed) is giving mov c, P0.6 ; which is not expected. Same code is used at all the three places. Can somebody help & point out the problem here. Sandy |
Topic | Author | Date |
Compiler variations?? | 01/01/70 00:00 | |
Fundamental philosophy of High-Level Languges (HLL) | 01/01/70 00:00 | |
C code | 01/01/70 00:00 | |
and so what | 01/01/70 00:00 | |
Stop wondering about the compiler output | 01/01/70 00:00 | |
Very nice to learn this important matter | 01/01/70 00:00 | |
Exactly what you wrote | 01/01/70 00:00 | |
volatile sbit may be the problem | 01/01/70 00:00 | |
read up on (not) volatile | 01/01/70 00:00 | |
Look at my profile | 01/01/70 00:00 | |
Not offence intended | 01/01/70 00:00 | |
defining P0_6 so that compiler doesn't treat it as volatile | 01/01/70 00:00 | |
Skip the goto - almost always exists beautiful rewrites | 01/01/70 00:00 | |
Goto really is a bastard code construct | 01/01/70 00:00 | |
and therefore ... | 01/01/70 00:00 | |
Will come back with modified code | 01/01/70 00:00 | |
Wonderful as always! | 01/01/70 00:00 |