############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.41A/W32 EVALUATION 17/Feb/2008 13:27:03 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\_MY_PROJECT\converter\menu.c # # Command line = D:\Pasha\elf\_MY_PROJECT\converter\menu.c -D # # NEWSGOLD -D ELKA -lC D:\Pasha\elf\_MY_PROJECT\conver # # ter\Release_ELKA\List\ -o # # D:\Pasha\elf\_MY_PROJECT\converter\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\ARM_Embedded_Work # # bench\Embedded Workbench 4.0 # # Evaluation\ARM\LIB\dl5tpainl8n.h" -I # # "D:\Pasha\ARM_Embedded_Workbench\Embedded Workbench # # 4.0 Evaluation\ARM\INC\" --inline_threshold=2 # # List file = D:\Pasha\elf\_MY_PROJECT\converter\Release_ELKA\List # # \menu.lst # # Object file = D:\Pasha\elf\_MY_PROJECT\converter\Release_ELKA\Obj\ # # menu.r79 # # # # # ############################################################################## D:\Pasha\elf\_MY_PROJECT\converter\menu.c 1 #include "..\inc\swilib.h" 2 int menu_id; 3 int it=4; 4 char *menu_name[]={ 5 "Из DEC", 6 "Из BIN", 7 "Из OCT", 8 "Из HEX" 9 }; 10 11 extern int item; 12 extern void about(); 13 extern int id_ed; 14 15 #pragma inline 16 void patch_header(HEADER_DESC* head) 17 { 18 head->rc.x=0; 19 head->rc.y=YDISP; 20 head->rc.x2=ScreenW()-1; 21 head->rc.y2=HeaderH()+YDISP; 22 } 23 #pragma inline 24 void patch_input(INPUTDIA_DESC* inp) 25 { 26 inp->rc.x=0; 27 inp->rc.y=HeaderH()+1+YDISP; 28 inp->rc.x2=ScreenW()-1; 29 inp->rc.y2=ScreenH()-SoftkeyH()-1; 30 } 31 //---------------------Создаем список меню-----------------------// 32 33 void menu_iconhnd(void *data, int curitem, void *unk); \ In segment DATA_C, align 4, align-sorted 34 const int menusoftke[]={0,1,2}; \ menusoftke: \ 00000000 000000000100 DC32 0, 1, 2 \ 000002000000 35 \ In segment DATA_C, align 4, align-sorted 36 const SOFTKEY_DESC menu_[]= \ menu_: \ 00000000 01000000 DC16 1, 0 \ 00000004 ........ DC32 `?` \ 00000008 04000000 DC16 4, 0 \ 0000000C ........ DC32 `?` \ 00000010 3D000000 DC16 61, 0 \ 00000014 FBC0FF7F DC32 2147467515 37 { 38 {0x0001,0x0000,(int)"Select"}, 39 {0x0004,0x0000,(int)"Close"}, 40 {0x003D,0x0000,(int)LGP_DOIT_PIC} 41 }; 42 \ In segment DATA_C, align 4, align-sorted 43 const SOFTKEYSTAB menu_s= \ menu_s: \ 00000000 ........0000 DC32 menu_, 0 \ 0000 44 { 45 menu_,0 46 }; 47 \ In segment CODE, align 4, keep-with-next 48 void menu_ghook(void *data, int cmd){}; \ menu_ghook: \ 00000000 1EFF2FE1 BX LR ;; return \ In segment DATA_I, align 4, align-sorted 49 int menu_onkey2(void *data, GUI_MSG *msg); 50 HEADER_DESC menuhdr2={0,0,131,21,NULL,(int)"Menu",LGP_NULL}; \ menuhdr2: \ 00000000 DS8 20 \ 00000014 REQUIRE `?` \ menu_id: \ 00000014 DS8 4 \ 00000018 REQUIRE `?` \ `it`: \ 00000018 DS8 4 \ 0000001C REQUIRE `?` \ In segment DATA_I, align 4, align-sorted \ menu_name: \ 00000000 DS8 16 \ 00000010 REQUIRE `?` 51 \ In segment DATA_C, align 4, align-sorted 52 const MENU_DESC menu= \ menu: \ 00000000 08000000.... DC32 8, menu_onkey2, menu_ghook, 0H, menusoftke, menu_s, 16 \ ............ \ 00000000.... \ ............ \ 10000000 \ 0000001C ........0000 DC32 menu_iconhnd, 0H, 0H, 7 \ 000000000000 \ 07000000 53 { 54 8,menu_onkey2,menu_ghook,NULL, 55 menusoftke, 56 &menu_s, 57 0x10,//0x11, 58 menu_iconhnd, 59 NULL, //Items 60 NULL, //Procs 61 7 //n 62 }; 63 \ In segment CODE, align 4, keep-with-next 64 void menu_iconhnd(void *data, int curitem, void *unk) 65 { \ menu_iconhnd: \ 00000000 F0472DE9 PUSH {R4-R10,LR} \ 00000004 0040A0E1 MOV R4,R0 66 WSHDR *ws; 67 char *s; 68 void *item=AllocMenuItem(data); 69 s=malloc(64); 70 sprintf(s,"%s",menu_name[curitem]); 71 if (s) \ 00000008 CC809FE5 LDR R8,??menu_iconhnd_0+0x8 ;; `?` \ 0000000C 0150A0E1 MOV R5,R1 \ 00000010 970100EF SWI +407 \ 00000014 0060A0E1 MOV R6,R0 \ 00000018 4000A0E3 MOV R0,#+64 \ 0000001C 140000EF SWI +20 \ 00000020 0070A0E1 MOV R7,R0 \ 00000024 B4009FE5 LDR R0,??menu_iconhnd_0+0xC ;; menu_name \ 00000028 291F8FE2 ADR R1,??menu_iconhnd_0 ;; "%s" \ 0000002C 052190E7 LDR R2,[R0, +R5, LSL #+2] \ 00000030 0700A0E1 MOV R0,R7 \ 00000034 160000EF SWI +22 \ 00000038 000057E3 CMP R7,#+0 \ 0000003C 1400000A BEQ ??menu_iconhnd_1 72 { 73 if (strlen(s)) \ 00000040 249F8FE2 ADR R9,??menu_iconhnd_0+0x4 ;; "%t" \ 00000044 0700A0E1 MOV R0,R7 \ 00000048 1B0000EF SWI +27 \ 0000004C 000050E3 CMP R0,#+0 \ 00000050 0900000A BEQ ??menu_iconhnd_2 74 { 75 ws=AllocMenuWS(data,strlen(s)+4); \ 00000054 0700A0E1 MOV R0,R7 \ 00000058 1B0000EF SWI +27 \ 0000005C 041080E2 ADD R1,R0,#+4 \ 00000060 0400A0E1 MOV R0,R4 \ 00000064 980100EF SWI +408 \ 00000068 00A0A0E1 MOV R10,R0 76 wsprintf(ws,"%t",s); \ 0000006C 0720A0E1 MOV R2,R7 \ ??menu_iconhnd_3: \ 00000070 0910A0E1 MOV R1,R9 \ 00000074 240100EF SWI +292 \ 00000078 0F0000EA B ??menu_iconhnd_4 77 } 78 else 79 { 80 ws=AllocMenuWS(data,10); \ ??menu_iconhnd_2: \ 0000007C 0A10A0E3 MOV R1,#+10 \ 00000080 0400A0E1 MOV R0,R4 \ 00000084 980100EF SWI +408 \ 00000088 00A0A0E1 MOV R10,R0 81 wsprintf(ws,"%t","no name"); \ 0000008C 0820A0E1 MOV R2,R8 \ 00000090 F6FFFFEA B ??menu_iconhnd_3 82 } 83 } 84 else 85 { 86 ws=AllocMenuWS(data,10); \ ??menu_iconhnd_1: \ 00000094 0A10A0E3 MOV R1,#+10 \ 00000098 0400A0E1 MOV R0,R4 \ 0000009C 980100EF SWI +408 \ 000000A0 00A0A0E1 MOV R10,R0 87 wsprintf(ws,"error"); \ 000000A4 081088E2 ADD R1,R8,#+8 \ 000000A8 240100EF SWI +292 88 wsInsertChar(ws,2,1);//Цвет надписей \ 000000AC 0120A0E3 MOV R2,#+1 \ 000000B0 0210A0E3 MOV R1,#+2 \ 000000B4 0A00A0E1 MOV R0,R10 \ 000000B8 1D0000EF SWI +29 89 90 } 91 SetMenuItemText(data,item,ws,curitem); \ ??menu_iconhnd_4: \ 000000BC 0530A0E1 MOV R3,R5 \ 000000C0 0A20A0E1 MOV R2,R10 \ 000000C4 0610A0E1 MOV R1,R6 \ 000000C8 0400A0E1 MOV R0,R4 \ 000000CC 9A0100EF SWI +410 92 } \ 000000D0 F087BDE8 POP {R4-R10,PC} ;; return \ ??menu_iconhnd_0: \ 000000D4 25730000 DC8 "%s",+0 \ 000000D8 25740000 DC8 "%t",+0 \ 000000DC ........ DC32 `?` \ 000000E0 ........ DC32 menu_name 93 94 extern void input(int i); \ In segment CODE, align 4, keep-with-next 95 int menu_onkey2(void *data, GUI_MSG *msg) 96 { \ menu_onkey2: \ 00000000 10402DE9 PUSH {R4,LR} \ 00000004 0140A0E1 MOV R4,R1 97 int i; 98 i=GetCurMenuItem(data); \ 00000008 8F0100EF SWI +399 99 int k=msg->gbsmsg->submess; \ 0000000C 041094E5 LDR R1,[R4, #+4] \ 00000010 081091E5 LDR R1,[R1, #+8] 100 if(k=='*') \ 00000014 2A0051E3 CMP R1,#+42 \ 00000018 0200001A BNE ??menu_onkey2_0 101 { 102 about(); \ 0000001C ........ _BLF about,??about??rA 103 return (-1); \ 00000020 0000E0E3 MVN R0,#+0 \ 00000024 1080BDE8 POP {R4,PC} 104 } 105 if (k==ENTER_BUTTON || k==LEFT_SOFT) \ ??menu_onkey2_0: \ 00000028 1A0051E3 CMP R1,#+26 \ 0000002C 01005113 CMPNE R1,#+1 \ 00000030 0000001A BNE ??menu_onkey2_1 106 { 107 input(i); \ 00000034 ........ _BLF input,??input??rA 108 } 109 /* if(k==RIGHT_SOFT || k==RED_BUTTON) 110 { 111 GeneralFunc_flag1(menu_id,1); 112 }*/ 113 return(0); \ ??menu_onkey2_1: \ 00000038 0000A0E3 MOV R0,#+0 \ 0000003C 1080BDE8 POP {R4,PC} ;; return 114 } 115 \ In segment CODE, align 4, keep-with-next 116 int ShowMainMenu() 117 { \ ShowMainMenu: \ 00000000 10402DE9 PUSH {R4,LR} 118 patch_header(&menuhdr2); \ 00000004 5C409FE5 LDR R4,??ShowMainMenu_0 ;; menuhdr2 \ 00000008 0000A0E3 MOV R0,#+0 \ 0000000C B000C4E1 STRH R0,[R4, #+0] \ 00000010 1800A0E3 MOV R0,#+24 \ 00000014 B200C4E1 STRH R0,[R4, #+2] \ 00000018 888100EF SWI +33160 \ 0000001C 010040E2 SUB R0,R0,#+1 \ 00000020 B400C4E1 STRH R0,[R4, #+4] \ 00000024 8A8100EF SWI +33162 119 return menu_id=CreateMenu(0,0,&menu,&menuhdr2,0,it,0,0); \ 00000028 3C209FE5 LDR R2,??ShowMainMenu_0+0x4 ;; menu \ 0000002C 180080E2 ADD R0,R0,#+24 \ 00000030 B600C4E1 STRH R0,[R4, #+6] \ 00000034 0000A0E3 MOV R0,#+0 \ 00000038 01002DE9 PUSH {R0} \ 0000003C 01002DE9 PUSH {R0} \ 00000040 180094E5 LDR R0,[R4, #+24] \ 00000044 0430A0E1 MOV R3,R4 \ 00000048 01002DE9 PUSH {R0} \ 0000004C 0010A0E3 MOV R1,#+0 \ 00000050 0000A0E3 MOV R0,#+0 \ 00000054 01002DE9 PUSH {R0} \ 00000058 520100EF SWI +338 \ 0000005C 140084E5 STR R0,[R4, #+20] \ 00000060 10D08DE2 ADD SP,SP,#+16 \ 00000064 1080BDE8 POP {R4,PC} ;; return \ ??ShowMainMenu_0: \ 00000068 ........ DC32 menuhdr2 \ 0000006C ........ DC32 menu 120 } \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 000000008300 DC16 0, 0, 131, 21 \ 1500 \ 00000008 00000000.... DC32 0H, `?`, 2147483647 \ ....FFFFFF7F \ `?`: \ 00000014 00000000 DC8 0, 0, 0, 0 \ `?`: \ 00000018 04000000 DC32 4 \ In segment DATA_ID, align 4, align-sorted \ `?`: \ 00000000 ............ DC32 `?`, `?` \ .... \ 00000008 ............ DC32 `?`, `?` \ .... \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 C8E720444543 DC8 "\310\347 DEC" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 C8E72042494E DC8 "\310\347 BIN" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 C8E7204F4354 DC8 "\310\347 OCT" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 C8E720484558 DC8 "\310\347 HEX" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 53656C656374 DC8 "Select" \ 00 \ 00000007 00 DC8 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 436C6F736500 DC8 "Close" \ 00000006 0000 DC8 0, 0 \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 4D656E7500 DC8 "Menu" \ 00000005 000000 DC8 0, 0, 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 257300 DC8 "%s" \ In segment DATA_C, align 1, align-sorted \ 00000000 257400 DC8 "%t" \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 6E6F206E616D DC8 "no name" \ 6500 \ 00000008 6572726F7200 DC8 "error" \ 0000000E 0000 DC8 0, 0 Maximum stack usage in bytes: Function CSTACK -------- ------ ShowMainMenu 24 menu_ghook 0 menu_iconhnd 32 menu_onkey2 8 Segment part sizes: Function/Label Bytes -------------- ----- menusoftke 12 menu_ 24 menu_s 8 menu_ghook 4 menuhdr2 28 menu_name 16 menu 44 menu_iconhnd 228 menu_onkey2 64 ShowMainMenu 112 ? 28 ? 16 ? 8 ? 8 ? 8 ? 8 ? 8 ? 8 ? 8 ? 3 ? 3 ? 16 Others 52 448 bytes in segment CODE 166 bytes in segment DATA_C 44 bytes in segment DATA_I 44 bytes in segment DATA_ID 12 bytes in segment INITTAB 408 bytes of CODE memory (+ 52 bytes shared) 210 bytes of CONST memory 44 bytes of DATA memory Errors: none Warnings: none