C51 COMPILER V3.06, SN-50202349 FRCBUG2 08/28/97 20:48:38 PAGE 1 DOS C51 COMPILER V3.06, COMPILATION OF MODULE FRCBUG2 OBJECT MODULE PLACED IN FRCBUG2.OBJ COMPILER INVOKED BY: C:\FRC\BIN\C51.EXE FRCBUG2.C CD SB OT(5) DB OE SM stmt level source 1 /* FRCBUG2.C ****************************************************************************** Erroneous elimination of function calls at high optimize levels. SMALL memory model, OPTIMIZE level 5 *****************************************************************************/ 7 #include 8 9 idata unsigned char CHKSUM, temp, a_b_code, n_r_code, DATA1, r_count; 10 idata unsigned char CUSTCODE=0x2C; 11 12 int send() 13 { P1=0xFF; 14 1 WDT=1; 15 1 SWDT=1; 16 1 temp=0; 17 1 do {++temp; } while(temp < 50); 18 1 do 19 1 {} 20 1 while(TI == 0); 21 1 TB8=1; 22 1 TI=0; 23 1 SBUF=CUSTCODE; } 24 25 void setup() 26 { PCON=0x80; 27 1 ADCON=0x00; 28 1 SCON=0xCB; 29 1 TMOD=0x20; 30 1 TCON=0x40; 31 1 TH1=251; 32 1 SWDT=1; 33 1 WDT=1; 34 1 a_b_code=0; 35 1 temp=0; } 36 37 main() 38 { setup(); 39 1 40 1 send(); 41 1 LOOP: CHKSUM=0; 42 1 CHKSUM += CUSTCODE; 43 1 temp=a_b_code; 44 1 if(P5 == 0xFE) a_b_code=0x55; 45 1 else if(P5 == 0xFD) a_b_code=0xAA; 46 1 47 1 if(temp != a_b_code) 48 1 { CHKSUM += a_b_code; 49 2 n_r_code=0xCC; 50 2 CHKSUM += n_r_code; 51 2 DATA1=0xFF; 52 2 CHKSUM += DATA1; 53 2 r_count=0; 54 2 do 55 2 { ++r_count; C51 COMPILER V3.06, SN-50202349 FRCBUG2 08/28/97 20:48:38 PAGE 2 56 3 /************* The call to send() is erroneously optimized away in the following line: *************/ 59 3 send(); } 60 2 while(r_count<150); } 61 1 else 62 1 { n_r_code=0x33; 63 2 CHKSUM += a_b_code; } 64 1 goto LOOP; } C51 COMPILER V3.06, SN-50202349 FRCBUG2 08/28/97 20:48:38 PAGE 3 ASSEMBLY LISTING OF GENERATED OBJECT CODE ; FUNCTION send (BEGIN) ; SOURCE LINE # 12 ; SOURCE LINE # 13 0000 7590FF MOV P1,#0FFH ; SOURCE LINE # 14 0003 D2AE SETB WDT ; SOURCE LINE # 15 0005 D2BE SETB SWDT ; SOURCE LINE # 16 0007 E4 CLR A 0008 7800 R MOV R0,#temp 000A F6 MOV @R0,A 000B ?C0003: ; SOURCE LINE # 17 000B 7800 R MOV R0,#temp 000D 06 INC @R0 000E E6 MOV A,@R0 000F C3 CLR C 0010 9432 SUBB A,#032H 0012 40F7 JC ?C0003 ; SOURCE LINE # 19 0014 ?C0004: ; SOURCE LINE # 20 0014 3099FD JNB TI,?C0004 ; SOURCE LINE # 21 0017 D29B SETB TB8 ; SOURCE LINE # 22 0019 C299 CLR TI ; SOURCE LINE # 23 001B 7800 R MOV R0,#CUSTCODE 001D E6 MOV A,@R0 001E F599 MOV SBUF,A 0020 22 RET ; FUNCTION send (END) ; FUNCTION setup (BEGIN) ; SOURCE LINE # 25 ; SOURCE LINE # 26 0000 758780 MOV PCON,#080H ; SOURCE LINE # 27 0003 E4 CLR A 0004 F5D8 MOV ADCON,A ; SOURCE LINE # 28 0006 7598CB MOV SCON,#0CBH ; SOURCE LINE # 29 0009 758920 MOV TMOD,#020H ; SOURCE LINE # 30 000C 758840 MOV TCON,#040H ; SOURCE LINE # 31 000F 758DFB MOV TH1,#0FBH ; SOURCE LINE # 32 0012 D2BE SETB SWDT ; SOURCE LINE # 33 0014 D2AE SETB WDT ; SOURCE LINE # 34 0016 7800 R MOV R0,#a_b_code 0018 F6 MOV @R0,A ; SOURCE LINE # 35 0019 08 INC R0 C51 COMPILER V3.06, SN-50202349 FRCBUG2 08/28/97 20:48:38 PAGE 4 001A F6 MOV @R0,A 001B 22 RET ; FUNCTION setup (END) ; FUNCTION main (BEGIN) ; SOURCE LINE # 37 ; SOURCE LINE # 38 0000 120000 R LCALL setup ; SOURCE LINE # 40 0003 120000 R LCALL send ; SOURCE LINE # 41 0006 LOOP: 0006 E4 CLR A 0007 7800 R MOV R0,#CHKSUM 0009 F6 MOV @R0,A ; SOURCE LINE # 42 000A 08 INC R0 000B E6 MOV A,@R0 000C 18 DEC R0 000D 26 ADD A,@R0 000E F6 MOV @R0,A ; SOURCE LINE # 43 000F 7800 R MOV R0,#a_b_code 0011 E6 MOV A,@R0 0012 08 INC R0 0013 F6 MOV @R0,A ; SOURCE LINE # 44 0014 E5F8 MOV A,P5 0016 B4FE05 CJNE A,#0FEH,?C0010 0019 18 DEC R0 001A 7655 MOV @R0,#055H 001C 8009 SJMP ?C0011 001E ?C0010: ; SOURCE LINE # 45 001E E5F8 MOV A,P5 0020 B4FD04 CJNE A,#0FDH,?C0011 0023 7800 R MOV R0,#a_b_code 0025 76AA MOV @R0,#0AAH 0027 ?C0011: ; SOURCE LINE # 47 0027 7800 R MOV R0,#a_b_code 0029 E6 MOV A,@R0 002A FF MOV R7,A 002B 08 INC R0 002C 66 XRL A,@R0 002D 6024 JZ ?C0013 ; SOURCE LINE # 48 002F 7800 R MOV R0,#CHKSUM 0031 EF MOV A,R7 0032 26 ADD A,@R0 0033 F6 MOV @R0,A ; SOURCE LINE # 49 0034 7800 R MOV R0,#n_r_code 0036 76CC MOV @R0,#0CCH ; SOURCE LINE # 50 0038 7800 R MOV R0,#CHKSUM 003A 24CC ADD A,#0CCH 003C F6 MOV @R0,A ; SOURCE LINE # 51 003D 18 DEC R0 003E 76FF MOV @R0,#0FFH ; SOURCE LINE # 52 C51 COMPILER V3.06, SN-50202349 FRCBUG2 08/28/97 20:48:38 PAGE 5 0040 08 INC R0 0041 16 DEC @R0 ; SOURCE LINE # 53 0042 E4 CLR A 0043 7800 R MOV R0,#r_count 0045 F6 MOV @R0,A 0046 ?C0016: ; SOURCE LINE # 55 0046 7800 R MOV R0,#r_count 0048 06 INC @R0 ; SOURCE LINE # 59 ; SOURCE LINE # 60 0049 7800 R MOV R0,#r_count 004B E6 MOV A,@R0 004C C3 CLR C 004D 9496 SUBB A,#096H 004F 40F5 JC ?C0016 0051 80B3 SJMP LOOP 0053 ?C0013: ; SOURCE LINE # 62 0053 7800 R MOV R0,#n_r_code 0055 7633 MOV @R0,#033H ; SOURCE LINE # 63 0057 7800 R MOV R0,#CHKSUM 0059 EF MOV A,R7 005A 26 ADD A,@R0 005B F6 MOV @R0,A ; SOURCE LINE # 64 005C 80A8 SJMP LOOP 005E 22 RET ; FUNCTION main (END) C51 COMPILER V3.06, SN-50202349 FRCBUG2 08/28/97 20:48:38 PAGE 6 NAME CLASS MSPACE TYPE OFFSET SIZE ==== ===== ====== ==== ====== ==== r_count. . . . . . . . . . . . . . . . PUBLIC IDATA U_CHAR 0000H 1 P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1 P5 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00F8H 1 TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1 a_b_code . . . . . . . . . . . . . . . PUBLIC IDATA U_CHAR 0001H 1 main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC ----- ----- LOOP . . . . . . . . . . . . . . . . LABEL CODE LABEL ----- ----- send . . . . . . . . . . . . . . . . . PUBLIC CODE PROC ----- ----- SBUF . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0099H 1 PCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0087H 1 setup. . . . . . . . . . . . . . . . . PUBLIC CODE PROC ----- ----- SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1 TMOD . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1 TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1 temp . . . . . . . . . . . . . . . . . PUBLIC IDATA U_CHAR 0002H 1 n_r_code . . . . . . . . . . . . . . . PUBLIC IDATA U_CHAR 0003H 1 SWDT . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BEH 1 DATA1. . . . . . . . . . . . . . . . . PUBLIC IDATA U_CHAR 0004H 1 CHKSUM . . . . . . . . . . . . . . . . PUBLIC IDATA U_CHAR 0005H 1 TH1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008DH 1 TB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009BH 1 CUSTCODE . . . . . . . . . . . . . . . PUBLIC IDATA U_CHAR 0006H 1 ADCON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D8H 1 WDT. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AEH 1 MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 156 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = ---- ---- IDATA SIZE = 7 ---- BIT SIZE = ---- ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)