############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 20/Sep/2009 20:35:52 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\pasha\elf\_MY_PROJECT_\test_is_player_run\main.c # # Command line = D:\pasha\elf\_MY_PROJECT_\test_is_player_run\main.c # # -D NEWSGOLD -D ELKA -D UIN_WRITE -D kluchnik -D # # BCFG --preprocess D:\pasha\elf\_MY_PROJECT_\test_is_ # # player_run\kluchnik\List\ -lC # # D:\pasha\elf\_MY_PROJECT_\test_is_player_run\kluchni # # k\List\ -o D:\pasha\elf\_MY_PROJECT_\test_is_player_ # # run\kluchnik\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\_MY_PROJECT_\test_is_player_run\kluchni # # k\List\main.lst # # Object file = D:\pasha\elf\_MY_PROJECT_\test_is_player_run\kluchni # # k\Obj\main.r79 # # # # # ############################################################################## D:\pasha\elf\_MY_PROJECT_\test_is_player_run\main.c 1 #include "../inc/swilib.h" 2 3 #ifdef ELKA 4 #define HOBJ_LOC 0x54 5 #else 6 #define HOBJ_LOC 0x50 7 #endif 8 \ In segment DATA_Z, align 4, align-sorted 9 unsigned int playercsmid=0; \ playercsmid: \ 00000000 DS8 4 10 void *playercsmadr=NULL; \ playercsmadr: \ 00000004 DS8 4 11 12 13 //el=A087B454 e=A087B454 14 char CSMADR[9]; \ CSMADR: \ 00000008 DS8 12 15 \ In segment CODE, align 4, keep-with-next 16 int strcmp_nocase(const char *s, const char *d) 17 { 18 int cs; 19 int ds; 20 do 21 { 22 cs=*s++; \ strcmp_nocase: \ ??strcmp_nocase_0: \ 00000000 ........ LDRB R2,[R0], #+1 23 if (cs&0x40) cs&=0xDF; 24 ds=*d++; \ 00000004 ........ LDRB R3,[R1], #+1 \ 00000008 400012E3 TST R2,#0x40 \ 0000000C DF200212 ANDNE R2,R2,#0xDF 25 if (ds&0x40) ds&=0xDF; \ 00000010 400013E3 TST R3,#0x40 \ 00000014 DF300312 ANDNE R3,R3,#0xDF 26 cs-=ds; \ 00000018 032052E0 SUBS R2,R2,R3 27 if (cs) break; \ 0000001C 0100001A BNE ??strcmp_nocase_1 28 } 29 while(ds); \ 00000020 000053E3 CMP R3,#+0 \ 00000024 F5FFFF1A BNE ??strcmp_nocase_0 30 return(cs); \ ??strcmp_nocase_1: \ 00000028 0200A0E1 MOV R0,R2 \ 0000002C 1EFF2FE1 BX LR ;; return 31 } 32 33 extern unsigned long strtoul (const char *nptr,char **endptr,int base); 34 \ In segment CODE, align 4, keep-with-next 35 int main(char *exename, char *fname) 36 { \ main: \ 00000000 F0402DE9 PUSH {R4-R7,LR} 37 int hobj=0; 38 char *phone = Get_Phone_Info(PI_MODEL); 39 CSM_RAM *csmp; 40 zeromem(CSMADR,9); \ 00000004 B4409FE5 LDR R4,??main_0 ;; playercsmid 41 // if(!strcmp_nocase(phone,"el71")) strcpy(CSMADR,"A087B454"); 42 //if(!strcmp_nocase(phone,"e71")) 43 strcpy(CSMADR,"A087109C"); \ 00000008 B4509FE5 LDR R5,??main_0+0x4 ;; `?` \ 0000000C 0900A0E3 MOV R0,#+9 \ 00000010 D50100EF SWI +469 \ 00000014 0070A0E1 MOV R7,R0 \ 00000018 0910A0E3 MOV R1,#+9 \ 0000001C 080084E2 ADD R0,R4,#+8 \ 00000020 1D0100EF SWI +285 \ 00000024 0510A0E1 MOV R1,R5 \ 00000028 080084E2 ADD R0,R4,#+8 \ 0000002C 1A0000EF SWI +26 44 ShowMSG(1,(int)phone); \ 00000030 0710A0E1 MOV R1,R7 \ 00000034 0100A0E3 MOV R0,#+1 \ 00000038 480100EF SWI +328 45 46 47 playercsmadr=(void *)strtoul(CSMADR,NULL,16); \ 0000003C 1020A0E3 MOV R2,#+16 \ 00000040 0010A0E3 MOV R1,#+0 \ 00000044 080084E2 ADD R0,R4,#+8 \ 00000048 ........ _BLF strtoul,??strtoul??rA \ 0000004C 040084E5 STR R0,[R4, #+4] 48 49 CSM_RAM *p=CSM_root()->csm_q->csm.first; \ 00000050 068100EF SWI +33030 \ 00000054 080090E5 LDR R0,[R0, #+8] \ 00000058 080090E5 LDR R0,[R0, #+8] \ 0000005C 000000EA B ??main_1 50 while(p) 51 { 52 if (p->constr==playercsmadr) break; 53 p=p->next; \ ??main_2: \ 00000060 000090E5 LDR R0,[R0, #+0] \ ??main_1: \ 00000064 000050E3 CMP R0,#+0 \ 00000068 0700000A BEQ ??main_3 \ 0000006C 081090E5 LDR R1,[R0, #+8] \ 00000070 042094E5 LDR R2,[R4, #+4] \ 00000074 020051E1 CMP R1,R2 \ 00000078 F8FFFF1A BNE ??main_2 54 } 55 if (p) 56 { 57 playercsmid=p->id; \ 0000007C 0C0090E5 LDR R0,[R0, #+12] \ 00000080 000084E5 STR R0,[R4, #+0] 58 csmp=FindCSMbyID(playercsmid); \ 00000084 080100EF SWI +264 \ 00000088 0060A0E1 MOV R6,R0 59 } 60 61 if(playercsmid) \ ??main_3: \ 0000008C 000094E5 LDR R0,[R4, #+0] \ 00000090 000050E3 CMP R0,#+0 \ 00000094 0400000A BEQ ??main_4 62 { 63 hobj = ((int*)csmp)[HOBJ_LOC/4]; 64 if (hobj) \ 00000098 540096E5 LDR R0,[R6, #+84] \ 0000009C 000050E3 CMP R0,#+0 \ 000000A0 18108502 ADDEQ R1,R5,#+24 65 ShowMSG(1,(int)"Player run"); \ 000000A4 0C108512 ADDNE R1,R5,#+12 \ 000000A8 000000EA B ??main_5 66 else 67 ShowMSG(1,(int)"hobj not found"); 68 } 69 else 70 ShowMSG(1,(int)"Not run"); \ ??main_4: \ 000000AC 281085E2 ADD R1,R5,#+40 \ ??main_5: \ 000000B0 0100A0E3 MOV R0,#+1 \ 000000B4 480100EF SWI +328 71 72 return 0; \ 000000B8 0000A0E3 MOV R0,#+0 \ 000000BC F080BDE8 POP {R4-R7,PC} ;; return \ ??main_0: \ 000000C0 ........ DC32 playercsmid \ 000000C4 ........ DC32 `?` 73 } \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 413038373130 DC8 "A087109C" \ 394300 \ 00000009 000000 DC8 0, 0, 0 \ 0000000C 506C61796572 DC8 "Player run" \ 2072756E00 \ 00000017 00 DC8 0 \ 00000018 686F626A206E DC8 "hobj not found" \ 6F7420666F75 \ 6E6400 \ 00000027 00 DC8 0 \ 00000028 4E6F74207275 DC8 "Not run" \ 6E00 Maximum stack usage in bytes: Function CSTACK -------- ------ main 20 strcmp_nocase 0 Segment part sizes: Function/Label Bytes -------------- ----- playercsmid 20 ??strcmp_nocase_0 48 main 200 ? 48 Others 32 268 bytes in segment CODE 48 bytes in segment DATA_C 20 bytes in segment DATA_Z 12 bytes in segment INITTAB 248 bytes of CODE memory (+ 32 bytes shared) 48 bytes of CONST memory 20 bytes of DATA memory Errors: none Warnings: none