############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 24/Jul/2008 00:02:21 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\evil_src\miosdel\miosd # # elka\missed_events.c # # Command line = "D:\Pasha\elf\evil_src\miosdel\miosd # # elka\missed_events.c" -D NEWSGOLD -D ELKA -lC # # "D:\Pasha\elf\evil_src\miosdel\miosd # # elka\Release_ELKA\List\" -lA # # "D:\Pasha\elf\evil_src\miosdel\miosd # # elka\Release_ELKA\List\" -o # # "D:\Pasha\elf\evil_src\miosdel\miosd # # elka\Release_ELKA\Obj\" -s9 --no_unroll --cpu_mode # # arm --endian little --cpu ARM926EJ-S --stack_align # # 4 --interwork -e --fpu None --dlib_config # # "D:\Pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\LIB\dl5tpainl8n.h" -I # # "D:\Pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\INC\" --inline_threshold=2 # # List file = D:\Pasha\elf\evil_src\miosdel\miosd # # elka\Release_ELKA\List\missed_events.lst # # Object file = D:\Pasha\elf\evil_src\miosdel\miosd # # elka\Release_ELKA\Obj\missed_events.r79 # # # # # ############################################################################## D:\Pasha\elf\evil_src\miosdel\miosd elka\missed_events.c 1 #include "..\inc\swilib.h" 2 \ In segment DATA_I, align 4, align-sorted 3 int mx=243; \ mx: \ 00000000 DS8 4 \ 00000004 REQUIRE `?` 4 int my=0; \ my: \ 00000004 DS8 4 \ 00000008 REQUIRE `?` 5 int alt_state; \ alt_state: \ 00000008 DS8 4 \ 0000000C REQUIRE `?` 6 int freeze_time; \ freeze_time: \ 0000000C DS8 4 \ 00000010 REQUIRE `?` 7 GBSTMR missedt; 8 int me; \ me: \ 00000010 DS8 4 \ 00000014 REQUIRE `?` \ missedt: \ 00000014 DS8 16 \ 00000024 REQUIRE `?` 9 /* 10 IMGHDR screen2={0,0,8,""}; 11 12 void DrwImg3(IMGHDR *img, int x, int y, char *pen, char *brush) 13 { 14 RECT rc; 15 DRWOBJ drwobj; 16 StoreXYWHtoRECT(&rc,x,y,img->w,img->h); 17 SetPropTo_Obj5(&drwobj,&rc,0,img); 18 SetColor(&drwobj,pen,brush); 19 DrawObject(&drwobj); 20 } 21 22 void DoScreen2() 23 { 24 int ScrH=ScreenH(); 25 int ScrW=ScreenW(); 26 char *ms=RamScreenBuffer(); 27 screen2.w=ScrW; 28 screen2.h=ScrH; 29 screen2.bitmap=malloc(ScrW*ScrH*2); 30 memcpy(screen2.bitmap, ms, ScrW*ScrH*2); 31 } 32 33 */ \ In segment CODE, align 4, keep-with-next 34 void redraw_data() 35 { \ redraw_data: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 36 // DrwImg3(&screen2, 0, 0, NULL, NULL); 37 DrawImg(mx, my, (int)"4:\\zbin\\miosd\\img9.png"); \ 00000004 ........ LDR R4,??DataTable2 ;; mx \ 00000008 E8619FE5 LDR R6,??redraw_data_0 ;; `?` \ 0000000C 000094E5 LDR R0,[R4, #+0] \ 00000010 041094E5 LDR R1,[R4, #+4] \ 00000014 0620A0E1 MOV R2,R6 \ 00000018 230000EF SWI +35 38 WSHDR *ws=AllocWS(64); \ 0000001C 4000A0E3 MOV R0,#+64 \ 00000020 250100EF SWI +293 \ 00000024 0050A0E1 MOV R5,R0 39 me=GetMissedEventCount(1); \ 00000028 0100A0E3 MOV R0,#+1 \ 0000002C 9E0000EF SWI +158 \ 00000030 100084E5 STR R0,[R4, #+16] 40 #ifdef EVILFOX 41 wsprintf(ws, "Calls: %d", me); 42 #else 43 wsprintf(ws, "%t: %d", "вызовы", me); \ 00000034 0030A0E1 MOV R3,R0 \ 00000038 202086E2 ADD R2,R6,#+32 \ 0000003C 181086E2 ADD R1,R6,#+24 \ 00000040 0500A0E1 MOV R0,R5 \ 00000044 240100EF SWI +292 44 #endif 45 DrawString(ws,mx+5,my+5,mx+Get_WS_width(ws,9)+5,my+GetFontYSIZE(9)+5,9,0,GetPaletteAdrByColorIndex(2),GetPaletteAdrByColorIndex(23)); \ 00000048 1700A0E3 MOV R0,#+23 \ 0000004C 2E0100EF SWI +302 \ 00000050 0070A0E1 MOV R7,R0 \ 00000054 0200A0E3 MOV R0,#+2 \ 00000058 2E0100EF SWI +302 \ 0000005C 0080A0E1 MOV R8,R0 \ 00000060 0900A0E3 MOV R0,#+9 \ 00000064 C50100EF SWI +453 \ 00000068 0090A0E1 MOV R9,R0 \ 0000006C 0910A0E3 MOV R1,#+9 \ 00000070 0500A0E1 MOV R0,R5 \ 00000074 080200EF SWI +520 \ 00000078 042094E5 LDR R2,[R4, #+4] \ 0000007C 001094E5 LDR R1,[R4, #+0] \ 00000080 80002DE9 PUSH {R7} \ 00000084 00012DE9 PUSH {R8} \ 00000088 0030A0E3 MOV R3,#+0 \ 0000008C 08002DE9 PUSH {R3} \ 00000090 010080E0 ADD R0,R0,R1 \ 00000094 051081E2 ADD R1,R1,#+5 \ 00000098 0930A0E3 MOV R3,#+9 \ 0000009C 08002DE9 PUSH {R3} \ 000000A0 023089E0 ADD R3,R9,R2 \ 000000A4 052082E2 ADD R2,R2,#+5 \ 000000A8 053083E2 ADD R3,R3,#+5 \ 000000AC 08002DE9 PUSH {R3} \ 000000B0 053080E2 ADD R3,R0,#+5 \ 000000B4 0500A0E1 MOV R0,R5 \ 000000B8 4C0100EF SWI +332 46 me=GetMissedEventCount(2); \ 000000BC 0200A0E3 MOV R0,#+2 \ 000000C0 9E0000EF SWI +158 \ 000000C4 100084E5 STR R0,[R4, #+16] 47 #ifdef EVILFOX 48 wsprintf(ws, "SMS: %d", me); 49 #else 50 wsprintf(ws, "%t: %d", "сообшения", me); \ 000000C8 0030A0E1 MOV R3,R0 \ 000000CC 282086E2 ADD R2,R6,#+40 \ 000000D0 181086E2 ADD R1,R6,#+24 \ 000000D4 0500A0E1 MOV R0,R5 \ 000000D8 240100EF SWI +292 51 #endif 52 DrawString(ws,mx+5,my+23,mx+Get_WS_width(ws,9)+5,my+GetFontYSIZE(9)+23,9,0,GetPaletteAdrByColorIndex(2),GetPaletteAdrByColorIndex(23)); \ 000000DC 1700A0E3 MOV R0,#+23 \ 000000E0 2E0100EF SWI +302 \ 000000E4 0070A0E1 MOV R7,R0 \ 000000E8 0200A0E3 MOV R0,#+2 \ 000000EC 2E0100EF SWI +302 \ 000000F0 0080A0E1 MOV R8,R0 \ 000000F4 0900A0E3 MOV R0,#+9 \ 000000F8 C50100EF SWI +453 \ 000000FC 0090A0E1 MOV R9,R0 \ 00000100 0910A0E3 MOV R1,#+9 \ 00000104 0500A0E1 MOV R0,R5 \ 00000108 080200EF SWI +520 \ 0000010C 042094E5 LDR R2,[R4, #+4] \ 00000110 001094E5 LDR R1,[R4, #+0] \ 00000114 80002DE9 PUSH {R7} \ 00000118 00012DE9 PUSH {R8} \ 0000011C 0030A0E3 MOV R3,#+0 \ 00000120 08002DE9 PUSH {R3} \ 00000124 010080E0 ADD R0,R0,R1 \ 00000128 051081E2 ADD R1,R1,#+5 \ 0000012C 0930A0E3 MOV R3,#+9 \ 00000130 08002DE9 PUSH {R3} \ 00000134 023089E0 ADD R3,R9,R2 \ 00000138 172082E2 ADD R2,R2,#+23 \ 0000013C 173083E2 ADD R3,R3,#+23 \ 00000140 08002DE9 PUSH {R3} \ 00000144 053080E2 ADD R3,R0,#+5 \ 00000148 0500A0E1 MOV R0,R5 \ 0000014C 4C0100EF SWI +332 \ 00000150 28D08DE2 ADD SP,SP,#+40 53 me=GetMissedEventCount(3); \ 00000154 0300A0E3 MOV R0,#+3 \ 00000158 9E0000EF SWI +158 \ 0000015C 100084E5 STR R0,[R4, #+16] 54 #ifdef EVILFOX 55 wsprintf(ws, "Other: %d", me); 56 #else 57 wsprintf(ws, "%t: %d", "разное", me); \ 00000160 0030A0E1 MOV R3,R0 \ 00000164 342086E2 ADD R2,R6,#+52 \ 00000168 181086E2 ADD R1,R6,#+24 \ 0000016C 0500A0E1 MOV R0,R5 \ 00000170 240100EF SWI +292 58 #endif 59 DrawString(ws,mx+5,my+41,mx+Get_WS_width(ws,9)+3,my+GetFontYSIZE(9)+41,9,0,GetPaletteAdrByColorIndex(2),GetPaletteAdrByColorIndex(23)); \ 00000174 1700A0E3 MOV R0,#+23 \ 00000178 2E0100EF SWI +302 \ 0000017C 0070A0E1 MOV R7,R0 \ 00000180 0200A0E3 MOV R0,#+2 \ 00000184 2E0100EF SWI +302 \ 00000188 0080A0E1 MOV R8,R0 \ 0000018C 0900A0E3 MOV R0,#+9 \ 00000190 C50100EF SWI +453 \ 00000194 0060A0E1 MOV R6,R0 \ 00000198 0910A0E3 MOV R1,#+9 \ 0000019C 0500A0E1 MOV R0,R5 \ 000001A0 080200EF SWI +520 \ 000001A4 041094E5 LDR R1,[R4, #+4] \ 000001A8 004094E5 LDR R4,[R4, #+0] \ 000001AC 80002DE9 PUSH {R7} \ 000001B0 00012DE9 PUSH {R8} \ 000001B4 0020A0E3 MOV R2,#+0 \ 000001B8 04002DE9 PUSH {R2} \ 000001BC 040080E0 ADD R0,R0,R4 \ 000001C0 033080E2 ADD R3,R0,#+3 \ 000001C4 0500A0E1 MOV R0,R5 \ 000001C8 0920A0E3 MOV R2,#+9 \ 000001CC 04002DE9 PUSH {R2} \ 000001D0 012086E0 ADD R2,R6,R1 \ 000001D4 292082E2 ADD R2,R2,#+41 \ 000001D8 04002DE9 PUSH {R2} \ 000001DC 292081E2 ADD R2,R1,#+41 \ 000001E0 051084E2 ADD R1,R4,#+5 \ 000001E4 4C0100EF SWI +332 60 FreeWS(ws); \ 000001E8 0500A0E1 MOV R0,R5 \ 000001EC 290100EF SWI +297 61 } \ 000001F0 14D08DE2 ADD SP,SP,#+20 \ 000001F4 F083BDE8 POP {R4-R9,PC} ;; return \ ??redraw_data_0: \ 000001F8 ........ DC32 `?` 62 63 void start_timerize(void); 64 \ In segment CODE, align 4, keep-with-next 65 void check_it_again() 66 { \ check_it_again: \ 00000000 00402DE9 PUSH {LR} 67 if(GetMissedEventCount(0)>0) start_timerize(); \ 00000004 0000A0E3 MOV R0,#+0 \ 00000008 9E0000EF SWI +158 \ 0000000C 010050E3 CMP R0,#+1 \ 00000010 0080BDB8 POPLT {PC} \ 00000014 ........ LDR R0,??DataTable3 ;; mx + 8 \ 00000018 0110A0E3 MOV R1,#+1 \ 0000001C 001080E5 STR R1,[R0, #+0] \ 00000020 ........ BL process_missed 68 } \ 00000024 0080BDE8 POP {PC} ;; return 69 70 \ In segment CODE, align 4, keep-with-next 71 void process_missed() 72 { \ process_missed: \ 00000000 30402DE9 PUSH {R4,R5,LR} 73 if(freeze_time) \ 00000004 ........ LDR R4,??DataTable2 ;; mx \ 00000008 90509FE5 LDR R5,??process_missed_0 ;; process_missed \ 0000000C 0C0094E5 LDR R0,[R4, #+12] \ 00000010 000050E3 CMP R0,#+0 74 { 75 freeze_time--; \ 00000014 01004012 SUBNE R0,R0,#+1 \ 00000018 0C008415 STRNE R0,[R4, #+12] 76 redraw_data(); \ 0000001C 0D00001A BNE ??process_missed_1 77 GBS_StartTimerProc(&missedt, 5, process_missed); 78 } 79 else 80 if((mx>100)&&(alt_state)) \ 00000020 000094E5 LDR R0,[R4, #+0] \ 00000024 650050E3 CMP R0,#+101 \ 00000028 100000BA BLT ??process_missed_2 \ 0000002C 081094E5 LDR R1,[R4, #+8] \ 00000030 000051E3 CMP R1,#+0 \ 00000034 0D00000A BEQ ??process_missed_2 81 { 82 mx=mx-2; \ 00000038 020040E2 SUB R0,R0,#+2 \ 0000003C 000084E5 STR R0,[R4, #+0] 83 if(mx<100) \ 00000040 640050E3 CMP R0,#+100 \ 00000044 030000AA BGE ??process_missed_1 84 { 85 freeze_time=100; \ 00000048 6400A0E3 MOV R0,#+100 \ 0000004C 0C0084E5 STR R0,[R4, #+12] 86 alt_state=0; \ 00000050 0000A0E3 MOV R0,#+0 \ 00000054 080084E5 STR R0,[R4, #+8] 87 } 88 redraw_data(); \ ??process_missed_1: \ 00000058 ........ BL redraw_data 89 GBS_StartTimerProc(&missedt, 5, process_missed); \ 0000005C 0520A0E1 MOV R2,R5 \ 00000060 0510A0E3 MOV R1,#+5 \ 00000064 140084E2 ADD R0,R4,#+20 \ 00000068 4D0000EF SWI +77 \ 0000006C 3080BDE8 POP {R4,R5,PC} 90 } 91 else 92 /* if(mx<245) 93 { 94 mx=mx+2; 95 redraw_data(); 96 GBS_StartTimerProc(&missedt, 5, process_missed); 97 } 98 else*/ 99 { 100 mx=243; \ ??process_missed_2: \ 00000070 F300A0E3 MOV R0,#+243 \ 00000074 000084E5 STR R0,[R4, #+0] 101 // mfree(screen2.bitmap); 102 if(!IsIdleUiOnTop()) \ 00000078 C50000EF SWI +197 \ 0000007C 000050E3 CMP R0,#+0 \ 00000080 0000001A BNE ??process_missed_3 103 RefreshGUI(); \ 00000084 960100EF SWI +406 104 GBS_StartTimerProc(&missedt, 60*216, check_it_again); \ ??process_missed_3: \ 00000088 14209FE5 LDR R2,??process_missed_0+0x4 ;; check_it_again \ 0000008C A010A0E3 MOV R1,#+160 \ 00000090 C81D81E3 ORR R1,R1,#0x3200 \ 00000094 140084E2 ADD R0,R4,#+20 \ 00000098 4D0000EF SWI +77 \ 0000009C 3080BDE8 POP {R4,R5,PC} \ ??process_missed_0: \ 000000A0 ........ DC32 process_missed \ 000000A4 ........ DC32 check_it_again 105 } 106 } 107 \ In segment CODE, align 4, keep-with-next 108 void start_timerize() 109 { 110 // DoScreen2(); 111 alt_state=1; \ start_timerize: \ 00000000 ........ LDR R0,??DataTable3 ;; mx + 8 \ 00000004 0110A0E3 MOV R1,#+1 \ 00000008 001080E5 STR R1,[R0, #+0] 112 process_missed(); \ 0000000C ........ B process_missed ;; tailcall 113 } \ In segment CODE, align 4, keep-with-next \ ??DataTable2: \ 00000000 ........ DC32 mx \ In segment CODE, align 4, keep-with-next \ ??DataTable3: \ 00000000 ........ DC32 mx + 8 \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 F3000000 DC32 243 \ `?`: \ 00000004 00000000 DC32 0 \ `?`: \ 00000008 00000000 DC8 0, 0, 0, 0 \ `?`: \ 0000000C 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000010 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000014 000000000000 DC8 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 \ 000000000000 \ 00000000 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 343A5C7A6269 DC8 "4:\\zbin\\miosd\\img9.png" \ 6E5C6D696F73 \ 645C696D6739 \ 2E706E6700 \ 00000017 00 DC8 0 \ 00000018 25743A202564 DC8 "%t: %d" \ 00 \ 0000001F 00 DC8 0 \ 00000020 E2FBE7EEE2FB DC8 "\342\373\347\356\342\373" \ 00 \ 00000027 00 DC8 0 \ 00000028 F1EEEEE1F8E5 DC8 "\361\356\356\341\370\345\355\350\377" \ EDE8FF00 \ 00000032 0000 DC8 0, 0 \ 00000034 F0E0E7EDEEE5 DC8 "\360\340\347\355\356\345" \ 00 \ 0000003B 00 DC8 0 114 115 Maximum stack usage in bytes: Function CSTACK -------- ------ check_it_again 4 process_missed 12 redraw_data 68 start_timerize 4 Segment part sizes: Function/Label Bytes -------------- ----- mx 36 redraw_data 508 check_it_again 40 process_missed 168 start_timerize 16 ??DataTable2 4 ??DataTable3 4 ? 36 ? 60 Others 28 756 bytes in segment CODE 60 bytes in segment DATA_C 36 bytes in segment DATA_I 36 bytes in segment DATA_ID 12 bytes in segment INITTAB 740 bytes of CODE memory (+ 28 bytes shared) 96 bytes of CONST memory 36 bytes of DATA memory Errors: none Warnings: none