############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 14/May/2008 12:49:21 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\googlecode\MyMenu2\MyMenu2_Editor\ed_gu # # i.c # # Command line = D:\Pasha\elf\googlecode\MyMenu2\MyMenu2_Editor\ed_gu # # i.c -D NEWSGOLD -D ELKA -lC # # D:\Pasha\elf\googlecode\MyMenu2\MyMenu2_Editor\Relea # # se\List\ -o D:\Pasha\elf\googlecode\MyMenu2\MyMenu2_ # # Editor\Release\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\googlecode\MyMenu2\MyMenu2_Editor\Relea # # se\List\ed_gui.lst # # Object file = D:\Pasha\elf\googlecode\MyMenu2\MyMenu2_Editor\Relea # # se\Obj\ed_gui.r79 # # # # # ############################################################################## D:\Pasha\elf\googlecode\MyMenu2\MyMenu2_Editor\ed_gui.c 1 #include "swilib.h" 2 #include "type.h" 3 #include "rect_patcher.h" 4 #include "lang.h" 5 6 extern WSHDR *ws_edit_functmp; 7 extern WSHDR *ws_edit_nametmp; 8 extern MENU_LIST *ml_edit_tmp; 9 extern unsigned int EDGUI_ID; 10 extern void open_select_file_gui(void *ed_gui, int type); 11 12 \ In segment DATA_C, align 4, align-sorted 13 const HEADER_DESC edheader={0, 0, 0, 0, NULL, (int)LGP_EDIT, LGP_NULL}; \ edheader: \ 00000000 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000008 00000000.... DC32 0H, `?`, 2147483647 \ ....FFFFFF7F \ 00000014 4E616D653A00 DC8 "Name:" \ 0000001A 0000 DC8 0, 0 \ 0000001C 46756E633A00 DC8 "Func:" \ 00000022 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted 14 const SOFTKEY_DESC ed_sk[]= \ ed_sk: \ 00000000 18000000 DC16 24, 0 \ 00000004 FFFFFF7F DC32 2147483647 \ 00000008 01000000 DC16 1, 0 \ 0000000C FFFFFF7F DC32 2147483647 \ 00000010 3D000000 DC16 61, 0 \ 00000014 FBC0FF7F DC32 2147467515 15 { 16 {0x0018,0x0000,(int)LGP_NULL}, 17 {0x0001,0x0000,(int)LGP_NULL}, 18 {0x003D,0x0000,(int)LGP_DOIT_PIC} 19 }; 20 \ In segment DATA_C, align 4, align-sorted 21 const SOFTKEYSTAB ed_skt= \ ed_skt: \ 00000000 ........0000 DC32 ed_sk, 0 \ 0000 22 { 23 ed_sk,0 24 }; 25 26 //void openfunc_list(void *ed_gui) 27 //{ 28 // 29 //} 30 31 \ In segment CODE, align 4, keep-with-next 32 void on_exmenu(USR_MENU_ITEM *item) 33 { \ on_exmenu: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0040A0E1 MOV R4,R0 34 if (item->type==0) \ 00000008 0000D4E5 LDRB R0,[R4, #+0] \ 0000000C 000050E3 CMP R0,#+0 \ 00000010 0800001A BNE ??on_exmenu_0 35 { 36 switch(item->cur_item) \ 00000014 B820D4E1 LDRH R2,[R4, #+8] \ 00000018 0C0094E5 LDR R0,[R4, #+12] \ 0000001C 48109FE5 LDR R1,??on_exmenu_1 ;; `?` \ 00000020 000052E3 CMP R2,#+0 \ 00000024 0200000A BEQ ??on_exmenu_2 \ 00000028 012052E2 SUBS R2,R2,#+1 \ 0000002C 0100001A BNE ??on_exmenu_0 37 { 38 case 0: 39 //gb2ws(item->ws, LGP_SLECET_FOLDER, 16); 40 wsprintf(item->ws,"Select folder"); 41 break; 42 case 1: 43 //gb2ws(item->ws, LGP_SLECET_FILE, 16); 44 wsprintf(item->ws,"Select file"); \ 00000030 101081E2 ADD R1,R1,#+16 \ ??on_exmenu_2: \ 00000034 240100EF SWI +292 45 break; 46 //case 2: 47 // gb2ws(item->ws, "ʹÓò˵¥Ë÷Òý", 16); 48 // break; 49 } 50 } 51 if (item->type==1) \ ??on_exmenu_0: \ 00000038 0000D4E5 LDRB R0,[R4, #+0] \ 0000003C 010050E3 CMP R0,#+1 \ 00000040 1080BD18 POPNE {R4,PC} 52 { 53 switch(item->cur_item) \ 00000044 B810D4E1 LDRH R1,[R4, #+8] \ 00000048 040094E5 LDR R0,[R4, #+4] \ 0000004C 000051E3 CMP R1,#+0 \ 00000050 0300000A BEQ ??on_exmenu_3 \ 00000054 011051E2 SUBS R1,R1,#+1 \ 00000058 0000000A BEQ ??on_exmenu_4 \ 0000005C 1080BDE8 POP {R4,PC} 54 { 55 case 0: 56 open_select_file_gui(item->user_pointer, 0); 57 break; 58 case 1: 59 open_select_file_gui(item->user_pointer, 1); \ ??on_exmenu_4: \ 00000060 0110A0E3 MOV R1,#+1 \ ??on_exmenu_3: \ 00000064 ........ _BLF open_select_file_gui,??open_select_file_gui??rA 60 break; 61 } 62 } 63 } \ 00000068 1080BDE8 POP {R4,PC} ;; return \ ??on_exmenu_1: \ 0000006C ........ DC32 `?` 64 \ In segment CODE, align 4, keep-with-next 65 int ed_onkey(GUI *data, GUI_MSG *msg) 66 { \ ed_onkey: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 67 int i=EDIT_GetFocus(data); 68 if(i==4) \ 0000000C 820100EF SWI +386 \ 00000010 040050E3 CMP R0,#+4 \ 00000014 0E00001A BNE ??ed_onkey_0 69 { 70 if (msg->gbsmsg->msg==KEY_DOWN) \ 00000018 040095E5 LDR R0,[R5, #+4] \ 0000001C 9320A0E3 MOV R2,#+147 \ 00000020 041090E5 LDR R1,[R0, #+4] \ 00000024 402F82E3 ORR R2,R2,#0x100 \ 00000028 020051E1 CMP R1,R2 71 { 72 if (msg->gbsmsg->submess==ENTER_BUTTON) \ 0000002C 08009005 LDREQ R0,[R0, #+8] \ 00000030 1A005003 CMPEQ R0,#+26 \ 00000034 0600001A BNE ??ed_onkey_0 73 { 74 EDIT_OpenOptionMenuWithUserItems(data, on_exmenu, data, 2); \ 00000038 1C109FE5 LDR R1,??ed_onkey_1 ;; on_exmenu \ 0000003C 0230A0E3 MOV R3,#+2 \ 00000040 0420A0E1 MOV R2,R4 \ 00000044 0400A0E1 MOV R0,R4 \ 00000048 E50100EF SWI +485 75 return -1; \ 0000004C 0000E0E3 MVN R0,#+0 \ 00000050 3080BDE8 POP {R4,R5,PC} 76 } 77 } 78 } 79 return 0; \ ??ed_onkey_0: \ 00000054 0000A0E3 MOV R0,#+0 \ 00000058 3080BDE8 POP {R4,R5,PC} ;; return \ ??ed_onkey_1: \ 0000005C ........ DC32 on_exmenu 80 } 81 \ In segment CODE, align 4, keep-with-next 82 void ed_ghook(GUI *data, int cmd) 83 { \ ed_ghook: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 2CD04DE2 SUB SP,SP,#+44 84 if (cmd==0x0A) \ 00000008 0A0051E3 CMP R1,#+10 \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 0200001A BNE ??ed_ghook_0 85 { 86 DisableIDLETMR(); \ 00000014 7F0100EF SWI +383 \ 00000018 2CD08DE2 ADD SP,SP,#+44 \ 0000001C 1080BDE8 POP {R4,PC} 87 } 88 if (cmd==0x07) \ ??ed_ghook_0: \ 00000020 070051E3 CMP R1,#+7 \ 00000024 0E00001A BNE ??ed_ghook_1 89 { 90 EDITCONTROL ec; 91 ExtractEditControl(data,2,&ec); \ 00000028 0D20A0E1 MOV R2,SP \ 0000002C 0210A0E3 MOV R1,#+2 \ 00000030 690100EF SWI +361 92 wstrcpy(ws_edit_nametmp, ec.pWS); \ 00000034 30009FE5 LDR R0,??ed_ghook_2 ;; ws_edit_nametmp \ 00000038 28109DE5 LDR R1,[SP, #+40] \ 0000003C 000090E5 LDR R0,[R0, #+0] \ 00000040 1F0100EF SWI +287 93 94 ExtractEditControl(data,4,&ec); \ 00000044 0D20A0E1 MOV R2,SP \ 00000048 0410A0E3 MOV R1,#+4 \ 0000004C 0400A0E1 MOV R0,R4 \ 00000050 690100EF SWI +361 95 wstrcpy(ws_edit_functmp, ec.pWS); \ 00000054 14009FE5 LDR R0,??ed_ghook_2+0x4 ;; ws_edit_functmp \ 00000058 28109DE5 LDR R1,[SP, #+40] \ 0000005C 000090E5 LDR R0,[R0, #+0] \ 00000060 1F0100EF SWI +287 96 } 97 } \ ??ed_ghook_1: \ 00000064 2CD08DE2 ADD SP,SP,#+44 ;; stack cleaning \ 00000068 1080BDE8 POP {R4,PC} ;; return \ ??ed_ghook_2: \ 0000006C ........ DC32 ws_edit_nametmp \ 00000070 ........ DC32 ws_edit_functmp 98 \ In segment CODE, align 4, keep-with-next 99 void ed_locret(void){;} \ ed_locret: \ 00000000 1EFF2FE1 BX LR ;; return \ In segment DATA_I, align 4, align-sorted 100 INPUTDIA_DESC ed_desc= \ ed_desc: \ 00000000 DS8 56 \ 00000038 REQUIRE `?` 101 { 102 1, 103 ed_onkey, 104 ed_ghook, 105 (void *)ed_locret, 106 0, 107 &ed_skt, 108 {0,0,0,0}, 109 4, 110 100, 111 101, 112 0, 113 0, 114 0x40000000 115 }; 116 \ In segment CODE, align 4, keep-with-next 117 void edit_ml(MENU_LIST *ml) 118 { \ edit_ml: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 0080A0E1 MOV R8,R0 119 ml_edit_tmp=ml; \ 00000008 04029FE5 LDR R0,??edit_ml_0+0x4 ;; ml_edit_tmp \ 0000000C 2CD04DE2 SUB SP,SP,#+44 \ 00000010 008080E5 STR R8,[R0, #+0] 120 if(!ml_edit_tmp) \ 00000014 000058E3 CMP R8,#+0 \ 00000018 7A00000A BEQ ??edit_ml_1 121 return; 122 void *ma=malloc_adr(); 123 void *eq; 124 EDITCONTROL ec; 125 WSHDR *ws; 126 WSHDR *ws2; 127 eq=AllocEQueue(ma,mfree_adr()); 128 ws=AllocWS(256); 129 ws2=AllocWS(256); 130 131 PrepareEditControl(&ec); 132 wsprintf(ws,_percent_t, LGP_NAME); \ 0000001C F4719FE5 LDR R7,??edit_ml_0+0x8 ;; edheader \ 00000020 148000EF SWI +32788 \ 00000024 0090A0E1 MOV R9,R0 \ 00000028 158000EF SWI +32789 \ 0000002C 0010A0E1 MOV R1,R0 \ 00000030 0900A0E1 MOV R0,R9 \ 00000034 630100EF SWI +355 \ 00000038 0040A0E1 MOV R4,R0 \ 0000003C 400FA0E3 MOV R0,#+256 \ 00000040 250100EF SWI +293 \ 00000044 0050A0E1 MOV R5,R0 \ 00000048 400FA0E3 MOV R0,#+256 \ 0000004C 250100EF SWI +293 \ 00000050 0060A0E1 MOV R6,R0 \ 00000054 0D00A0E1 MOV R0,SP \ 00000058 640100EF SWI +356 \ 0000005C 6BAF8FE2 ADR R10,??edit_ml_0 ;; "%t" \ 00000060 142087E2 ADD R2,R7,#+20 \ 00000064 0A10A0E1 MOV R1,R10 \ 00000068 0500A0E1 MOV R0,R5 \ 0000006C 240100EF SWI +292 133 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ws,ws->wsbody[0]); \ 00000070 000095E5 LDR R0,[R5, #+0] \ 00000074 0530A0E1 MOV R3,R5 \ 00000078 B000D0E1 LDRH R0,[R0, #+0] \ 0000007C 4020A0E3 MOV R2,#+64 \ 00000080 0110A0E3 MOV R1,#+1 \ 00000084 01002DE9 PUSH {R0} \ 00000088 04008DE2 ADD R0,SP,#+4 \ 0000008C 650100EF SWI +357 134 AddEditControlToEditQend(eq,&ec,ma); \ 00000090 0920A0E1 MOV R2,R9 \ 00000094 04108DE2 ADD R1,SP,#+4 \ 00000098 0400A0E1 MOV R0,R4 \ 0000009C 660100EF SWI +358 135 136 PrepareEditControl(&ec); \ 000000A0 04008DE2 ADD R0,SP,#+4 \ 000000A4 640100EF SWI +356 137 utf8_2ws(ws2, ml->name, ml->name_len); \ 000000A8 0C2098E5 LDR R2,[R8, #+12] \ 000000AC 081098E5 LDR R1,[R8, #+8] \ 000000B0 0600A0E1 MOV R0,R6 \ 000000B4 E30100EF SWI +483 138 ConstructEditControl(&ec,ECT_CURSOR_STAY,ECF_SET_CURSOR_END,ws2,128); \ 000000B8 8000A0E3 MOV R0,#+128 \ 000000BC 01002DE9 PUSH {R0} \ 000000C0 0630A0E1 MOV R3,R6 \ 000000C4 8020A0E3 MOV R2,#+128 \ 000000C8 0410A0E3 MOV R1,#+4 \ 000000CC 08008DE2 ADD R0,SP,#+8 \ 000000D0 650100EF SWI +357 139 AddEditControlToEditQend(eq,&ec,ma); \ 000000D4 0920A0E1 MOV R2,R9 \ 000000D8 08108DE2 ADD R1,SP,#+8 \ 000000DC 0400A0E1 MOV R0,R4 \ 000000E0 660100EF SWI +358 140 141 PrepareEditControl(&ec); \ 000000E4 08008DE2 ADD R0,SP,#+8 \ 000000E8 640100EF SWI +356 142 wsprintf(ws,_percent_t, LGP_FUNC); \ 000000EC 1C2087E2 ADD R2,R7,#+28 \ 000000F0 0A10A0E1 MOV R1,R10 \ 000000F4 0500A0E1 MOV R0,R5 \ 000000F8 240100EF SWI +292 143 ConstructEditControl(&ec,ECT_HEADER,ECF_APPEND_EOL,ws,ws->wsbody[0]); \ 000000FC 000095E5 LDR R0,[R5, #+0] \ 00000100 0530A0E1 MOV R3,R5 \ 00000104 B000D0E1 LDRH R0,[R0, #+0] \ 00000108 4020A0E3 MOV R2,#+64 \ 0000010C 0110A0E3 MOV R1,#+1 \ 00000110 01002DE9 PUSH {R0} \ 00000114 0C008DE2 ADD R0,SP,#+12 \ 00000118 650100EF SWI +357 144 AddEditControlToEditQend(eq,&ec,ma); \ 0000011C 0920A0E1 MOV R2,R9 \ 00000120 0C108DE2 ADD R1,SP,#+12 \ 00000124 0400A0E1 MOV R0,R4 \ 00000128 660100EF SWI +358 145 146 PrepareEditControl(&ec); \ 0000012C 0C008DE2 ADD R0,SP,#+12 \ 00000130 640100EF SWI +356 147 utf8_2ws(ws2, ml->func, ml->func_len); \ 00000134 142098E5 LDR R2,[R8, #+20] \ 00000138 101098E5 LDR R1,[R8, #+16] \ 0000013C 0600A0E1 MOV R0,R6 \ 00000140 E30100EF SWI +483 148 ConstructEditControl(&ec,ECT_CURSOR_STAY,ECF_SET_CURSOR_END,ws2,128); \ 00000144 8000A0E3 MOV R0,#+128 \ 00000148 01002DE9 PUSH {R0} \ 0000014C 0630A0E1 MOV R3,R6 \ 00000150 0020A0E1 MOV R2,R0 \ 00000154 0410A0E3 MOV R1,#+4 \ 00000158 10008DE2 ADD R0,SP,#+16 \ 0000015C 650100EF SWI +357 149 AddEditControlToEditQend(eq,&ec,ma); \ 00000160 0920A0E1 MOV R2,R9 150 151 patch_header(&edheader); 152 patch_input(&ed_desc); \ 00000164 B0909FE5 LDR R9,??edit_ml_0+0xC ;; ed_desc \ 00000168 10108DE2 ADD R1,SP,#+16 \ 0000016C 0400A0E1 MOV R0,R4 \ 00000170 660100EF SWI +358 \ 00000174 0080A0E3 MOV R8,#+0 \ 00000178 B080C7E1 STRH R8,[R7, #+0] \ 0000017C 1800A0E3 MOV R0,#+24 \ 00000180 B200C7E1 STRH R0,[R7, #+2] \ 00000184 888100EF SWI +33160 \ 00000188 010040E2 SUB R0,R0,#+1 \ 0000018C B400C7E1 STRH R0,[R7, #+4] \ 00000190 8A8100EF SWI +33162 \ 00000194 170080E2 ADD R0,R0,#+23 \ 00000198 B600C7E1 STRH R0,[R7, #+6] \ 0000019C B881C9E1 STRH R8,[R9, #+24] \ 000001A0 8A8100EF SWI +33162 \ 000001A4 190080E2 ADD R0,R0,#+25 \ 000001A8 BA01C9E1 STRH R0,[R9, #+26] \ 000001AC 888100EF SWI +33160 \ 000001B0 010040E2 SUB R0,R0,#+1 \ 000001B4 BC01C9E1 STRH R0,[R9, #+28] \ 000001B8 898100EF SWI +33161 \ 000001BC 0080A0E1 MOV R8,R0 \ 000001C0 8B8100EF SWI +33163 \ 000001C4 000048E0 SUB R0,R8,R0 \ 000001C8 010040E2 SUB R0,R0,#+1 \ 000001CC BE01C9E1 STRH R0,[R9, #+30] 153 EDGUI_ID=CreateInputTextDialog(&ed_desc,&edheader,eq,1,0); \ 000001D0 0000A0E3 MOV R0,#+0 \ 000001D4 01002DE9 PUSH {R0} \ 000001D8 0130A0E3 MOV R3,#+1 \ 000001DC 0420A0E1 MOV R2,R4 \ 000001E0 0710A0E1 MOV R1,R7 \ 000001E4 0900A0E1 MOV R0,R9 \ 000001E8 670100EF SWI +359 \ 000001EC 2C109FE5 LDR R1,??edit_ml_0+0x10 ;; EDGUI_ID \ 000001F0 000081E5 STR R0,[R1, #+0] 154 155 FreeWS(ws); \ 000001F4 0500A0E1 MOV R0,R5 \ 000001F8 290100EF SWI +297 156 FreeWS(ws2); \ 000001FC 0600A0E1 MOV R0,R6 \ 00000200 290100EF SWI +297 157 } \ 00000204 14D08DE2 ADD SP,SP,#+20 \ ??edit_ml_1: \ 00000208 2CD08DE2 ADD SP,SP,#+44 ;; stack cleaning \ 0000020C F087BDE8 POP {R4-R10,PC} ;; return \ ??edit_ml_0: \ 00000210 25740000 DC8 "%t",+0 \ 00000214 ........ DC32 ml_edit_tmp \ 00000218 ........ DC32 edheader \ 0000021C ........ DC32 ed_desc \ 00000220 ........ DC32 EDGUI_ID \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 01000000.... DC32 1, ed_onkey, ed_ghook, ed_locret, 0, ed_skt \ ............ \ ........0000 \ 0000........ \ 00000018 000000000000 DC16 0, 0, 0, 0 \ 0000 \ 00000020 040000006400 DC32 4, 100, 101, 0, 0, 1073741824 \ 000065000000 \ 000000000000 \ 000000000040 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4564697400 DC8 "Edit" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 53656C656374 DC8 "Select folder" \ 20666F6C6465 \ 7200 \ 0000000E 0000 DC8 0, 0 \ 00000010 53656C656374 DC8 "Select file" \ 2066696C6500 \ In segment DATA_C, align 1, align-sorted \ 00000000 257400 DC8 "%t" 158 Maximum stack usage in bytes: Function CSTACK -------- ------ ed_ghook 52 ed_locret 0 ed_onkey 12 edit_ml 96 on_exmenu 8 Segment part sizes: Function/Label Bytes -------------- ----- edheader 36 ed_sk 24 ed_skt 8 on_exmenu 112 ed_onkey 96 ed_ghook 116 ed_locret 4 ed_desc 56 edit_ml 548 ? 56 ? 8 ? 28 ? 3 Others 44 908 bytes in segment CODE 107 bytes in segment DATA_C 56 bytes in segment DATA_I 56 bytes in segment DATA_ID 12 bytes in segment INITTAB 876 bytes of CODE memory (+ 44 bytes shared) 163 bytes of CONST memory 56 bytes of DATA memory Errors: none Warnings: none