############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 01/Aug/2010 17:48:47 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\pasha\elf\_MY_PROJECT_\Reminder_ms\main.cpp # # Command line = D:\pasha\elf\_MY_PROJECT_\Reminder_ms\main.cpp -D # # NEWSGOLD -lC D:\pasha\elf\_MY_PROJECT_\Reminder_ms\R # # elease_NEWSGOLD\List\ -o D:\pasha\elf\_MY_PROJECT_\R # # eminder_ms\Release_NEWSGOLD\Obj\ -s9 --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\_MY_PROJECT_\Reminder_ms\Release_NEWSGO # # LD\List\main.lst # # Object file = D:\pasha\elf\_MY_PROJECT_\Reminder_ms\Release_NEWSGO # # LD\Obj\main.r79 # # # # # ############################################################################## D:\pasha\elf\_MY_PROJECT_\Reminder_ms\main.cpp 1 #include "..\inc\swilib.h" 2 #include "../inc/cfg_items.h" 3 #include "conf_loader.h" 4 #include "print.h" 5 6 #define IPC_TEXTINFO_NAME "Reminder" 7 #define IPC_UPDATE_STAT 1 8 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 52656D696E64 DC8 "Reminder_ms config updated!" \ 65725F6D7320 \ 636F6E666967 \ 207570646174 \ 65642100 \ 0000001C 257425642574 DC8 "%t%d%t" \ 00 \ 00000023 00 DC8 0 9 const char ipc_my_name[]=IPC_TEXTINFO_NAME; \ ipc_my_name: \ 00000024 52656D696E64 DC8 "Reminder" \ 657200 \ 0000002D 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted 10 const IPC_REQ my_ipc={ \ my_ipc: \ 00000000 ............ DC32 ipc_my_name, ipc_my_name, 0H \ ....00000000 11 ipc_my_name, 12 ipc_my_name, 13 NULL 14 }; 15 \ In segment CODE, align 4, keep-with-next 16 void TimerProc(void) 17 { 18 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_UPDATE_STAT,&my_ipc);//эта херня отправляет ипц хтаску \ TimerProc: \ 00000000 ........ LDR R3,??DataTable3 ;; my_ipc \ 00000004 00402DE9 PUSH {LR} \ 00000008 0120A0E3 MOV R2,#+1 \ 0000000C B010A0E3 MOV R1,#+176 \ 00000010 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000014 0900A0E3 MOV R0,#+9 \ 00000018 420C80E3 ORR R0,R0,#0x4200 \ 0000001C 000100EF SWI +256 19 } \ 00000020 0080BDE8 POP {PC} ;; return 20 21 \ In segment DATA_Z, align 4, align-sorted 22 int (*old_icsm_onMessage)(CSM_RAM*,GBS_MSG*); \ old_icsm_onMessage: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted 23 void (*old_icsm_onClose)(CSM_RAM*); \ old_icsm_onClose: \ 00000000 DS8 4 24 25 extern void kill_data(void *p, void (*func_p)(void *)); 26 27 #pragma segment="ELFBEGIN" \ In segment CODE, align 4, keep-with-next 28 void ElfKiller(void) 29 { \ ElfKiller: \ 00000000 00402DE9 PUSH {LR} 30 kill_data(__segment_begin("ELFBEGIN"),(void (*)(void *))mfree_adr()); \ 00000004 158000EF SWI +32789 \ 00000008 0010A0E1 MOV R1,R0 \ 0000000C 04009FE5 LDR R0,??ElfKiller_0 ;; SFB(ELFBEGIN) \ 00000010 0040BDE8 POP {LR} ;; Pop \ 00000014 ........ _BF kill_data,??kill_data??rA ;; tailcall \ ??ElfKiller_0: \ 00000018 ........ DC32 SFB(ELFBEGIN) 31 } 32 33 34 35 #define TMR_SECOND 216 36 GBSTMR mytmr; 37 extern void InitConfig(); 38 int my_csm_id; 39 unsigned int *ErrorNumber; 40 \ In segment DATA_C, align 1, align-sorted 41 const char percent_t[]="%t"; \ percent_t: \ 00000000 257400 DC8 "%t" 42 43 typedef struct 44 { 45 CSM_RAM csm; 46 int gui_id; 47 }MAIN_CSM; 48 49 // ---------------------------------------------------------------------------- 50 #define idlegui_id(icsm) (((int *)icsm)[DISPLACE_OF_IDLEGUI_ID/4]) 51 52 #pragma inline=forced 53 int toupper(int c) 54 { 55 if ((c>='a')&&(c<='z')) c+='A'-'a'; 56 return(c); 57 } 58 #pragma inline 59 int strcmp_nocase(const char *s1,const char *s2) 60 { 61 int i; 62 int c; 63 while(!(i=(c=toupper(*s1++))-toupper(*s2++))) if (!c) break; 64 return(i); 65 } 66 \ In segment CODE, align 4, keep-with-next 67 int get_string_width(WSHDR *ws, int font) 68 { \ get_string_width: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 69 int width=0; 70 unsigned short *body=ws->wsbody; \ 00000004 006090E5 LDR R6,[R0, #+0] \ 00000008 0140A0E1 MOV R4,R1 71 int len=body[0]; \ 0000000C B070D6E1 LDRH R7,[R6, #+0] \ 00000010 0050A0E3 MOV R5,#+0 \ 00000014 000057E3 CMP R7,#+0 \ 00000018 0600000A BEQ ??get_string_width_0 72 while(len) 73 { 74 width+=GetSymbolWidth(body[len],font); \ ??get_string_width_1: \ 0000001C 870086E0 ADD R0,R6,R7, LSL #+1 \ 00000020 B000D0E1 LDRH R0,[R0, #+0] \ 00000024 0410A0E1 MOV R1,R4 \ 00000028 E10100EF SWI +481 \ 0000002C 055080E0 ADD R5,R0,R5 75 len--; \ 00000030 017057E2 SUBS R7,R7,#+1 76 } \ 00000034 F8FFFF1A BNE ??get_string_width_1 77 return (width+1);//хз, без этого тупит \ ??get_string_width_0: \ 00000038 010085E2 ADD R0,R5,#+1 \ 0000003C F080BDE8 POP {R4-R7,PC} ;; return 78 } 79 \ In segment DATA_C, align 1, align-sorted 80 const char per_t[]="%t"; \ per_t: \ 00000000 257400 DC8 "%t" \ In segment DATA_Z, align 4, align-sorted 81 82 83 extern const unsigned int X; 84 extern const unsigned int Y; 85 extern const int font; 86 extern const char col[]; 87 extern const int align; 88 extern const int cfgDay; 89 extern const int cfgMonth; 90 91 extern const char TEXT_BEFORE[]; 92 extern const char TEXT_AFTER[]; 93 94 void *canvasdata; \ canvasdata: \ 00000000 DS8 4 \ mytmr: \ 00000004 DS8 16 \ In segment DATA_Z, align 4, align-sorted \ my_csm_id: \ 00000000 DS8 4 \ In segment DATA_Z, align 4, align-sorted \ ErrorNumber: \ 00000000 DS8 4 95 \ In segment DATA_I, align 4, align-sorted 96 int day_count[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; \ day_count: \ 00000000 DS8 52 \ 00000034 REQUIRE `?` 97 \ In segment CODE, align 4, keep-with-next 98 int getDayCount() 99 { \ getDayCount: \ 00000000 00402DE9 PUSH {LR} \ 00000004 08D04DE2 SUB SP,SP,#+8 100 TDate date; 101 int i = 0; 102 int c = 0; 103 GetDateTime(&date,0); \ 00000008 0010A0E3 MOV R1,#+0 \ 0000000C 0D00A0E1 MOV R0,SP \ 00000010 B40000EF SWI +180 104 105 if(date.month == cfgMonth) \ 00000014 0400DDE5 LDRB R0,[SP, #+4] \ 00000018 54209FE5 LDR R2,??getDayCount_0 ;; cfgMonth \ 0000001C 54109FE5 LDR R1,??getDayCount_0+0x4 ;; cfgDay \ 00000020 002092E5 LDR R2,[R2, #+0] \ 00000024 001091E5 LDR R1,[R1, #+0] \ 00000028 020050E1 CMP R0,R2 106 c += cfgDay - date.day; \ 0000002C 0500DD05 LDRBEQ R0,[SP, #+5] \ 00000030 00004100 SUBEQ R0,R1,R0 \ 00000034 0C00000A BEQ ??getDayCount_1 107 else 108 { 109 c = day_count[date.month] - date.day; \ 00000038 3C309FE5 LDR R3,??getDayCount_0+0x8 ;; day_count \ 0000003C 05E0DDE5 LDRB LR,[SP, #+5] \ 00000040 00C193E7 LDR R12,[R3, +R0, LSL #+2] 110 111 for(i = date.month ; i < cfgMonth - 1 ; i++) \ 00000044 012042E2 SUB R2,R2,#+1 \ 00000048 0EC04CE0 SUB R12,R12,LR \ 0000004C 020050E1 CMP R0,R2 \ 00000050 040000AA BGE ??getDayCount_2 112 c += day_count[i]; \ ??getDayCount_3: \ 00000054 00E193E7 LDR LR,[R3, +R0, LSL #+2] \ 00000058 010080E2 ADD R0,R0,#+1 \ 0000005C 0CC08EE0 ADD R12,LR,R12 \ 00000060 020050E1 CMP R0,R2 \ 00000064 FAFFFFBA BLT ??getDayCount_3 113 c += cfgDay; \ ??getDayCount_2: \ 00000068 0C0081E0 ADD R0,R1,R12 114 } 115 return c-1; \ ??getDayCount_1: \ 0000006C 010040E2 SUB R0,R0,#+1 \ 00000070 0680BDE8 POP {R1,R2,PC} ;; return \ ??getDayCount_0: \ 00000074 ........ DC32 cfgMonth \ 00000078 ........ DC32 cfgDay \ 0000007C ........ DC32 day_count 116 } 117 \ In segment CODE, align 4, keep-with-next 118 int checkGui(int id) 119 { \ checkGui: \ 00000000 10402DE9 PUSH {R4,LR} 120 int retval = 0; \ 00000004 0040A0E3 MOV R4,#+0 121 if (IsGuiOnTop(id)) \ 00000008 350100EF SWI +309 \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0A00000A BEQ ??checkGui_0 122 { 123 GUI* igui = GetTopGUI(); \ 00000014 4D0100EF SWI +333 124 if (igui) \ 00000018 000050E3 CMP R0,#+0 \ 0000001C 0700000A BEQ ??checkGui_0 125 { 126 #ifdef ELKA 127 canvasdata = BuildCanvas(); 128 retval = 1; 129 #else 130 void *idata = GetDataOfItemByID(igui, 2); \ 00000020 0210A0E3 MOV R1,#+2 \ 00000024 4F0100EF SWI +335 131 if (idata) \ 00000028 000050E3 CMP R0,#+0 \ 0000002C 0300000A BEQ ??checkGui_0 132 { 133 canvasdata = ((void **)idata)[DISPLACE_OF_IDLECANVAS / 4]; \ 00000030 ........ LDR R1,??DataTable2 ;; canvasdata \ 00000034 180090E5 LDR R0,[R0, #+24] 134 retval = 1; \ 00000038 0140A0E3 MOV R4,#+1 \ 0000003C 000081E5 STR R0,[R1, #+0] 135 } 136 #endif 137 } 138 } 139 return retval; \ ??checkGui_0: \ 00000040 0400A0E1 MOV R0,R4 \ 00000044 1080BDE8 POP {R4,PC} ;; return 140 } 141 142 \ In segment CODE, align 4, keep-with-next 143 int maincsm_onmessage(CSM_RAM* data,GBS_MSG* msg) 144 { \ maincsm_onmessage: \ 00000000 F0432DE9 PUSH {R4-R9,LR} 145 void *icsm; 146 if (msg->msg==MSG_RECONFIGURE_REQ) \ 00000004 ........ LDR R4,??DataTable2 ;; canvasdata \ 00000008 18629FE5 LDR R6,??maincsm_onmessage_0 ;; `?` \ 0000000C 0150A0E1 MOV R5,R1 \ 00000010 040095E5 LDR R0,[R5, #+4] \ 00000014 AF10A0E3 MOV R1,#+175 \ 00000018 DE1C81E3 ORR R1,R1,#0xDE00 \ 0000001C 010050E1 CMP R0,R1 \ 00000020 1600001A BNE ??maincsm_onmessage_1 147 { 148 extern const char *successed_config_filename; 149 if (strcmp_nocase(successed_config_filename,(char *)msg->data0)==0) \ 00000024 00129FE5 LDR R1,??maincsm_onmessage_0+0x4 ;; successed_config_filename \ 00000028 0C0095E5 LDR R0,[R5, #+12] \ 0000002C 001091E5 LDR R1,[R1, #+0] \ ??maincsm_onmessage_2: \ 00000030 0020D1E5 LDRB R2,[R1, #+0] \ 00000034 610052E3 CMP R2,#+97 \ 00000038 010000BA BLT ??maincsm_onmessage_3 \ 0000003C 7B0052E3 CMP R2,#+123 \ 00000040 202042B2 SUBLT R2,R2,#+32 \ ??maincsm_onmessage_3: \ 00000044 0030D0E5 LDRB R3,[R0, #+0] \ 00000048 011081E2 ADD R1,R1,#+1 \ 0000004C 610053E3 CMP R3,#+97 \ 00000050 010000BA BLT ??maincsm_onmessage_4 \ 00000054 7B0053E3 CMP R3,#+123 \ 00000058 203043B2 SUBLT R3,R3,#+32 \ ??maincsm_onmessage_4: \ 0000005C 010080E2 ADD R0,R0,#+1 \ 00000060 033052E0 SUBS R3,R2,R3 \ 00000064 2600001A BNE ??maincsm_onmessage_5 \ 00000068 000052E3 CMP R2,#+0 \ 0000006C EFFFFF1A BNE ??maincsm_onmessage_2 150 { 151 ShowMSG(1,(int)"Reminder_ms config updated!"); \ 00000070 0610A0E1 MOV R1,R6 \ 00000074 0100A0E3 MOV R0,#+1 \ 00000078 480100EF SWI +328 152 InitConfig(); \ 0000007C ........ _BLF InitConfig,??InitConfig??rA 153 } 154 } 155 156 if (msg->msg==MSG_IPC) \ ??maincsm_onmessage_1: \ 00000080 040095E5 LDR R0,[R5, #+4] \ 00000084 B010A0E3 MOV R1,#+176 \ 00000088 DE1C81E3 ORR R1,R1,#0xDE00 \ 0000008C 010050E1 CMP R0,R1 \ 00000090 1B00001A BNE ??maincsm_onmessage_5 157 { 158 IPC_REQ *ipc; 159 if ((ipc=(IPC_REQ*)msg->data0)) \ 00000094 0C0095E5 LDR R0,[R5, #+12] \ 00000098 000050E3 CMP R0,#+0 \ 0000009C 1800000A BEQ ??maincsm_onmessage_5 160 { 161 if (strcmp_nocase(ipc->name_to,ipc_my_name)==0) \ 000000A0 000090E5 LDR R0,[R0, #+0] \ 000000A4 241086E2 ADD R1,R6,#+36 \ ??maincsm_onmessage_6: \ 000000A8 0020D0E5 LDRB R2,[R0, #+0] \ 000000AC 610052E3 CMP R2,#+97 \ 000000B0 010000BA BLT ??maincsm_onmessage_7 \ 000000B4 7B0052E3 CMP R2,#+123 \ 000000B8 202042B2 SUBLT R2,R2,#+32 \ ??maincsm_onmessage_7: \ 000000BC 0030D1E5 LDRB R3,[R1, #+0] \ 000000C0 010080E2 ADD R0,R0,#+1 \ 000000C4 610053E3 CMP R3,#+97 \ 000000C8 010000BA BLT ??maincsm_onmessage_8 \ 000000CC 7B0053E3 CMP R3,#+123 \ 000000D0 203043B2 SUBLT R3,R3,#+32 \ ??maincsm_onmessage_8: \ 000000D4 011081E2 ADD R1,R1,#+1 \ 000000D8 033052E0 SUBS R3,R2,R3 \ 000000DC 0800001A BNE ??maincsm_onmessage_5 \ 000000E0 000052E3 CMP R2,#+0 \ 000000E4 EFFFFF1A BNE ??maincsm_onmessage_6 162 { 163 switch (msg->submess) \ 000000E8 080095E5 LDR R0,[R5, #+8] \ 000000EC 010050E3 CMP R0,#+1 \ 000000F0 0300001A BNE ??maincsm_onmessage_5 164 { 165 case IPC_UPDATE_STAT: 166 GBS_StartTimerProc(&mytmr, 10*TMR_SECOND/10, TimerProc); \ 000000F4 34219FE5 LDR R2,??maincsm_onmessage_0+0x8 ;; TimerProc \ 000000F8 D810A0E3 MOV R1,#+216 \ 000000FC 040084E2 ADD R0,R4,#+4 \ 00000100 4D0000EF SWI +77 167 } 168 } 169 } 170 } 171 // icsm=FindCSMbyID(CSM_root()->idle_id); 172 173 174 /* if(msg->msg == MSG_IPC) 175 { 176 IPC_REQ *ipc; 177 if ((ipc=(IPC_REQ*)msg->data0)) 178 { 179 if (strcmp_nocase(ipc->name_to,"IdleUpd")==0) 180 { 181 switch (msg->submess) 182 { 183 case 0: 184 { 185 icsm=FindCSMbyID(CSM_root()->idle_id); 186 if (icsm && checkGui(idlegui_id(icsm))) 187 { 188 WSHDR *ws = AllocWS(256); 189 //Здесь рисуем 190 canvasdata = BuildCanvas(); 191 wsprintf(ws,per_t,getDayCount()); 192 DrawCanvas(canvasdata, X, Y, X+Get_WS_width(ws, font), Y+GetFontYSIZE(font), 1); 193 DrawString(ws,X,Y,X+Get_WS_width(ws,font)+4, Y+GetFontYSIZE(font), font,0,col,GetPaletteAdrByColorIndex(23)); 194 } 195 break; 196 } 197 } 198 } 199 }*/ 200 201 202 icsm=FindCSMbyID(CSM_root()->idle_id); \ ??maincsm_onmessage_5: \ 00000104 068100EF SWI +33030 \ 00000108 040090E5 LDR R0,[R0, #+4] \ 0000010C 080100EF SWI +264 203 if (icsm && checkGui(idlegui_id(icsm))) \ 00000110 000050E3 CMP R0,#+0 \ 00000114 4100000A BEQ ??maincsm_onmessage_9 \ 00000118 2C0090E5 LDR R0,[R0, #+44] \ 0000011C ........ BL checkGui \ 00000120 000050E3 CMP R0,#+0 \ 00000124 3D00000A BEQ ??maincsm_onmessage_9 204 // if (icsm) 205 { 206 // if (IsGuiOnTop(idlegui_id(icsm))) //Если IdleGui на самом верху 207 { 208 GUI *igui=GetTopGUI(); 209 if (igui) //И он существует \ 00000128 4D0100EF SWI +333 \ 0000012C 000050E3 CMP R0,#+0 \ 00000130 3A00000A BEQ ??maincsm_onmessage_9 210 { 211 WSHDR *ws = AllocWS(256); \ 00000134 400FA0E3 MOV R0,#+256 \ 00000138 250100EF SWI +293 \ 0000013C 0050A0E1 MOV R5,R0 212 // canvasdata = BuildCanvas(); 213 wsprintf(ws,"%t%d%t",TEXT_BEFORE, getDayCount(), TEXT_AFTER); \ 00000140 ........ BL getDayCount \ 00000144 E8209FE5 LDR R2,??maincsm_onmessage_0+0xC ;; TEXT_BEFORE \ 00000148 0030A0E1 MOV R3,R0 \ 0000014C E4009FE5 LDR R0,??maincsm_onmessage_0+0x10 ;; TEXT_AFTER \ 00000150 1C1086E2 ADD R1,R6,#+28 \ 00000154 01002DE9 PUSH {R0} \ 00000158 0500A0E1 MOV R0,R5 \ 0000015C 240100EF SWI +292 214 DrawCanvas(canvasdata, X, Y, X+Get_WS_width(ws, font), Y+GetFontYSIZE(font), 1); \ 00000160 D4009FE5 LDR R0,??maincsm_onmessage_0+0x14 ;; font \ 00000164 006090E5 LDR R6,[R0, #+0] \ 00000168 0600A0E1 MOV R0,R6 \ 0000016C C50100EF SWI +453 \ 00000170 0090A0E1 MOV R9,R0 \ 00000174 0610A0E1 MOV R1,R6 \ 00000178 0500A0E1 MOV R0,R5 \ 0000017C 080200EF SWI +520 \ 00000180 B8109FE5 LDR R1,??maincsm_onmessage_0+0x18 ;; X \ 00000184 007091E5 LDR R7,[R1, #+0] \ 00000188 B4109FE5 LDR R1,??maincsm_onmessage_0+0x1C ;; Y \ 0000018C 073080E0 ADD R3,R0,R7 \ 00000190 008091E5 LDR R8,[R1, #+0] \ 00000194 0110A0E3 MOV R1,#+1 \ 00000198 02002DE9 PUSH {R1} \ 0000019C 0820A0E1 MOV R2,R8 \ 000001A0 081089E0 ADD R1,R9,R8 \ 000001A4 02002DE9 PUSH {R1} \ 000001A8 000094E5 LDR R0,[R4, #+0] \ 000001AC 0710A0E1 MOV R1,R7 \ 000001B0 250000EF SWI +37 215 DrawString(ws,X,Y,X+Get_WS_width(ws,font)+4, Y+GetFontYSIZE(font), font,align,col,GetPaletteAdrByColorIndex(23)); \ 000001B4 1700A0E3 MOV R0,#+23 \ 000001B8 2E0100EF SWI +302 \ 000001BC 0090A0E1 MOV R9,R0 \ 000001C0 0600A0E1 MOV R0,R6 \ 000001C4 C50100EF SWI +453 \ 000001C8 0040A0E1 MOV R4,R0 \ 000001CC 0610A0E1 MOV R1,R6 \ 000001D0 0500A0E1 MOV R0,R5 \ 000001D4 080200EF SWI +520 \ 000001D8 68109FE5 LDR R1,??maincsm_onmessage_0+0x20 ;; col \ 000001DC 00022DE9 PUSH {R9} \ 000001E0 02002DE9 PUSH {R1} \ 000001E4 60109FE5 LDR R1,??maincsm_onmessage_0+0x24 ;; align \ 000001E8 070080E0 ADD R0,R0,R7 \ 000001EC 001091E5 LDR R1,[R1, #+0] \ 000001F0 043080E2 ADD R3,R0,#+4 \ 000001F4 02002DE9 PUSH {R1} \ 000001F8 40002DE9 PUSH {R6} \ 000001FC 0820A0E1 MOV R2,R8 \ 00000200 081084E0 ADD R1,R4,R8 \ 00000204 02002DE9 PUSH {R1} \ 00000208 0500A0E1 MOV R0,R5 \ 0000020C 0710A0E1 MOV R1,R7 \ 00000210 4C0100EF SWI +332 216 FreeWS(ws); \ 00000214 0500A0E1 MOV R0,R5 \ 00000218 290100EF SWI +297 \ 0000021C 20D08DE2 ADD SP,SP,#+32 217 } 218 } 219 } 220 221 return(1); \ ??maincsm_onmessage_9: \ 00000220 0100A0E3 MOV R0,#+1 \ 00000224 F083BDE8 POP {R4-R9,PC} ;; return \ ??maincsm_onmessage_0: \ 00000228 ........ DC32 `?` \ 0000022C ........ DC32 successed_config_filename \ 00000230 ........ DC32 TimerProc \ 00000234 ........ DC32 TEXT_BEFORE \ 00000238 ........ DC32 TEXT_AFTER \ 0000023C ........ DC32 font \ 00000240 ........ DC32 X \ 00000244 ........ DC32 Y \ 00000248 ........ DC32 col \ 0000024C ........ DC32 align 222 } 223 \ In segment CODE, align 4, keep-with-next 224 static void maincsm_oncreate(CSM_RAM *data) 225 { 226 227 GBS_SendMessage(MMI_CEPID,MSG_IPC,IPC_UPDATE_STAT,&my_ipc); \ maincsm_oncreate: \ 00000000 ........ LDR R3,??DataTable3 ;; my_ipc \ 00000004 00402DE9 PUSH {LR} \ 00000008 0120A0E3 MOV R2,#+1 \ 0000000C B010A0E3 MOV R1,#+176 \ 00000010 DE1C81E3 ORR R1,R1,#0xDE00 \ 00000014 0900A0E3 MOV R0,#+9 \ 00000018 420C80E3 ORR R0,R0,#0x4200 \ 0000001C 000100EF SWI +256 228 } \ 00000020 0080BDE8 POP {PC} ;; return 229 \ In segment CODE, align 4, keep-with-next 230 void maincsm_onclose(CSM_RAM *data) 231 { 232 extern void seqkill(void *data, void(*next_in_seq)(CSM_RAM *), void *data_to_kill, void *seqkiller); 233 extern void *ELF_BEGIN; 234 } \ maincsm_onclose: \ 00000000 1EFF2FE1 BX LR ;; return 235 \ In segment DATA_Z, align 4, align-sorted 236 static unsigned short maincsm_name_body[140]; \ maincsm_name_body: \ 00000000 DS8 280 \ In segment DATA_C, align 4, align-sorted 237 const int minus11=-11; \ minus11: \ 00000000 F5FFFFFF DC32 -11 238 239 static const struct 240 { 241 CSM_DESC maincsm; 242 WSHDR maincsm_name; \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 52656D696E64 DC8 "Reminder" \ 657200 \ 00000009 000000 DC8 0, 0, 0 \ 0000000C ............ DC32 maincsm_onmessage, maincsm_oncreate, 0, 0, 0, 0, maincsm_onclose \ ....00000000 \ 000000000000 \ 000000000000 \ ........ \ 00000028 280000000100 DC32 40, 1, minus11, maincsm_name_body, 55AACCCCH, 3333AA55H, 0 \ 0000........ \ ........CCCC \ AA5555AA3333 \ 00000000 \ 00000044 8B00 DC16 139 \ 00000046 0000 DC8 0, 0 243 }MAINCSM = 244 { 245 { 246 maincsm_onmessage, 247 maincsm_oncreate, 248 #ifdef NEWSGOLD 249 0, 250 0, 251 0, 252 0, 253 #endif 254 maincsm_onclose, 255 sizeof(CSM_RAM), 256 1, 257 &minus11 258 }, 259 { 260 maincsm_name_body, 261 NAMECSM_MAGIC1, 262 NAMECSM_MAGIC2, 263 0x0, 264 139 265 } 266 }; 267 268 269 static void UpdateCSMname(void) 270 { 271 wsprintf((WSHDR *)(&MAINCSM.maincsm_name),"Reminder"); 272 } 273 // ---------------------------------------------------------------------------- 274 275 \ In segment DATA_Z, align 4, align-sorted 276 CSM_DESC icsmd; \ icsmd: \ 00000000 DS8 40 \ In segment CODE, align 4, keep-with-next 277 int main() 278 { \ main: \ 00000000 70402DE9 PUSH {R4-R6,LR} 279 CSMROOT *csmr; 280 CSM_RAM *save_cmpc; 281 CSM_RAM main_csm; 282 283 InitConfig(); 284 UpdateCSMname(); \ 00000004 54409FE5 LDR R4,??main_0 ;; `?` \ 00000008 28D04DE2 SUB SP,SP,#+40 \ 0000000C ........ _BLF InitConfig,??InitConfig??rA \ 00000010 0410A0E1 MOV R1,R4 \ 00000014 340084E2 ADD R0,R4,#+52 \ 00000018 240100EF SWI +292 285 286 LockSched(); \ 0000001C 460100EF SWI +326 287 csmr=CSM_root(); \ 00000020 068100EF SWI +33030 \ 00000024 0050A0E1 MOV R5,R0 288 save_cmpc=csmr->csm_q->current_msg_processing_csm; \ 00000028 080095E5 LDR R0,[R5, #+8] 289 csmr->csm_q->current_msg_processing_csm=csmr->csm_q->csm.first; 290 CreateCSM(&MAINCSM.maincsm,&main_csm,0); \ 0000002C 0020A0E3 MOV R2,#+0 \ 00000030 081090E5 LDR R1,[R0, #+8] \ 00000034 046090E5 LDR R6,[R0, #+4] \ 00000038 041080E5 STR R1,[R0, #+4] \ 0000003C 0D10A0E1 MOV R1,SP \ 00000040 0C0084E2 ADD R0,R4,#+12 \ 00000044 070100EF SWI +263 291 csmr->csm_q->current_msg_processing_csm=save_cmpc; \ 00000048 080095E5 LDR R0,[R5, #+8] \ 0000004C 046080E5 STR R6,[R0, #+4] 292 UnlockSched(); \ 00000050 470100EF SWI +327 293 294 return (0); \ 00000054 0000A0E3 MOV R0,#+0 \ 00000058 28D08DE2 ADD SP,SP,#+40 \ 0000005C 7080BDE8 POP {R4-R6,PC} ;; return \ ??main_0: \ 00000060 ........ DC32 `?` 295 } \ In segment CODE, align 4, keep-with-next \ ??DataTable2: \ 00000000 ........ DC32 canvasdata \ In segment CODE, align 4, keep-with-next \ ??DataTable3: \ 00000000 ........ DC32 my_ipc \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 000000001F00 DC32 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 \ 00001C000000 \ 1F0000001E00 \ 00001F000000 \ 1E0000001F00 \ 00001F000000 \ 1E0000001F00 \ 00001E000000 \ 1F000000 \ In segment ELFBEGIN, align 1 Maximum stack usage in bytes: Function CSTACK -------- ------ ElfKiller 4 TimerProc 4 checkGui 8 getDayCount 12 get_string_width 20 main 56 maincsm_onclose 0 maincsm_oncreate 4 maincsm_onmessage 60 Segment part sizes: Function/Label Bytes -------------- ----- ? 48 my_ipc 12 TimerProc 36 old_icsm_onMessage 4 old_icsm_onClose 4 ElfKiller 28 percent_t 3 get_string_width 64 per_t 3 canvasdata 20 my_csm_id 4 ErrorNumber 4 day_count 52 getDayCount 128 checkGui 72 maincsm_onmessage 592 maincsm_oncreate 36 maincsm_onclose 4 maincsm_name_body 280 minus11 4 ? 72 icsmd 40 main 100 ??DataTable2 4 ??DataTable3 4 ? 52 Others 84 1 128 bytes in segment CODE 142 bytes in segment DATA_C 52 bytes in segment DATA_I 52 bytes in segment DATA_ID 356 bytes in segment DATA_Z 24 bytes in segment INITTAB 1 068 bytes of CODE memory (+ 84 bytes shared) 194 bytes of CONST memory 408 bytes of DATA memory Errors: none Warnings: none