############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 26/May/2009 12:58:53 # # 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\gprs_write.c # # Command line = "D:\pasha\elf\evil_src\miosdel\miosd # # elka\gprs_write.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\gprs_write.lst # # Object file = D:\pasha\elf\evil_src\miosdel\miosd # # elka\Release_ELKA\Obj\gprs_write.r79 # # # # # ############################################################################## D:\pasha\elf\evil_src\miosdel\miosd elka\gprs_write.c 1 #include "..\inc\swilib.h" 2 extern char gpinfo[]; 3 char gp1info[32]; 4 int result1; 5 int result2; 6 int result3; 7 int janko; 8 \ In segment CODE, align 4, keep-with-next 9 int atoi(char *attr) 10 { \ atoi: \ 00000000 10002DE9 PUSH {R4} 11 int ret=0; \ 00000004 0010A0E3 MOV R1,#+0 12 int neg=1; \ 00000008 0120A0E3 MOV R2,#+1 13 for (int k=0; ; k++) \ 0000000C 0030A0E3 MOV R3,#+0 \ 00000010 060000EA B ??atoi_0 14 { 15 if ( attr[k]>0x2F && attr[k]<0x3A) {ret=ret*10+attr[k]-0x30;} else { if ( attr[k]=='-') {neg=-1;} else {return(ret*neg);}} \ ??atoi_1: \ 00000014 04C0A0E1 MOV R12,R4 \ 00000018 3A005CE3 CMP R12,#+58 \ 0000001C 0600002A BCS ??atoi_2 \ 00000020 0A40A0E3 MOV R4,#+10 \ 00000024 94C121E0 MLA R1,R4,R1,R12 \ 00000028 301041E2 SUB R1,R1,#+48 \ ??atoi_3: \ 0000002C 013083E2 ADD R3,R3,#+1 \ ??atoi_0: \ 00000030 0040D3E7 LDRB R4,[R3, +R0] \ 00000034 300054E3 CMP R4,#+48 \ 00000038 F5FFFF2A BCS ??atoi_1 \ ??atoi_2: \ 0000003C 2D0054E3 CMP R4,#+45 \ 00000040 0020E003 MVNEQ R2,#+0 \ 00000044 F8FFFF0A BEQ ??atoi_3 \ 00000048 1000BDE8 POP {R4} \ 0000004C 920100E0 MUL R0,R2,R1 \ 00000050 1EFF2FE1 BX LR ;; return 16 } 17 } 18 \ In segment CODE, align 4, keep-with-next 19 void write_file(char *wer) 20 { \ write_file: \ 00000000 30402DE9 PUSH {R4,R5,LR} 21 volatile int hFile2; 22 unsigned int io_error2 = 0; 23 unsigned int ul2; 24 FSTATS stat2; 25 GetFileStats("4:\\zbin\\miosd\\miosd3.file",&stat2,&ul2); \ 00000004 ........ LDR R5,??DataTable1 ;; `?` \ 00000008 34D04DE2 SUB SP,SP,#+52 \ 0000000C 0040A0E1 MOV R4,R0 \ 00000010 0010A0E3 MOV R1,#+0 \ 00000014 00108DE5 STR R1,[SP, #+0] \ 00000018 08208DE2 ADD R2,SP,#+8 \ 0000001C 0C108DE2 ADD R1,SP,#+12 \ 00000020 0500A0E1 MOV R0,R5 \ 00000024 840000EF SWI +132 26 hFile2 = fopen("4:\\zbin\\miosd\\miosd3.file",A_ReadWrite+A_Create+A_Truncate+ A_BIN,P_READ+P_WRITE, &io_error2); \ 00000028 0D30A0E1 MOV R3,SP \ 0000002C 602FA0E3 MOV R2,#+384 \ 00000030 0210A0E3 MOV R1,#+2 \ 00000034 831C81E3 ORR R1,R1,#0x8300 \ 00000038 0500A0E1 MOV R0,R5 \ 0000003C 0A0000EF SWI +10 \ 00000040 04008DE5 STR R0,[SP, #+4] 27 if(hFile2!=-1) \ 00000044 04009DE5 LDR R0,[SP, #+4] \ 00000048 010070E3 CMN R0,#+1 \ 0000004C 0900000A BEQ ??write_file_0 28 { 29 fwrite(hFile2, wer, strlen(wer), &io_error2); \ 00000050 0400A0E1 MOV R0,R4 \ 00000054 1B0000EF SWI +27 \ 00000058 0D30A0E1 MOV R3,SP \ 0000005C 0020A0E1 MOV R2,R0 \ 00000060 04009DE5 LDR R0,[SP, #+4] \ 00000064 0410A0E1 MOV R1,R4 \ 00000068 0C0000EF SWI +12 30 fclose(hFile2, &io_error2); \ 0000006C 04009DE5 LDR R0,[SP, #+4] \ 00000070 0D10A0E1 MOV R1,SP \ 00000074 0D0000EF SWI +13 31 } 32 } \ ??write_file_0: \ 00000078 34D08DE2 ADD SP,SP,#+52 ;; stack cleaning \ 0000007C 3080BDE8 POP {R4,R5,PC} ;; return \ In segment DATA_Z, align 4, align-sorted \ result1: \ 00000000 DS8 4 \ result2: \ 00000004 DS8 4 \ result3: \ 00000008 DS8 4 \ gp1info: \ 0000000C DS8 32 33 34 char txt_in[32]; \ txt_in: \ 0000002C DS8 32 \ In segment DATA_Z, align 4, align-sorted \ janko: \ 00000000 DS8 4 35 \ In segment CODE, align 4, keep-with-next 36 void write_total() 37 { 38 int f4; 39 int fsize4; 40 FSTATS stat4; 41 unsigned int ul4; 42 43 result1=atoi(gpinfo); \ write_total: \ 00000000 18019FE5 LDR R0,??write_total_0+0x4 ;; gpinfo \ 00000004 F0412DE9 PUSH {R4-R8,LR} \ 00000008 14419FE5 LDR R4,??write_total_0+0x8 ;; result1 44 45 volatile int hFile_ex3; 46 unsigned int io_error_ex3 = 0; 47 hFile_ex3 = fopen("4:\\zbin\\miosd\\miosd3.file",A_ReadOnly + A_BIN,P_READ, &io_error_ex3); \ 0000000C ........ LDR R6,??DataTable1 ;; `?` \ 00000010 34D04DE2 SUB SP,SP,#+52 \ 00000014 ........ BL atoi \ 00000018 000084E5 STR R0,[R4, #+0] \ 0000001C 0010A0E3 MOV R1,#+0 \ 00000020 04108DE5 STR R1,[SP, #+4] \ 00000024 04308DE2 ADD R3,SP,#+4 \ 00000028 8020A0E3 MOV R2,#+128 \ 0000002C 801CA0E3 MOV R1,#+32768 \ 00000030 0600A0E1 MOV R0,R6 \ 00000034 0A0000EF SWI +10 \ 00000038 08008DE5 STR R0,[SP, #+8] 48 if(hFile_ex3!=-1) \ 0000003C 08009DE5 LDR R0,[SP, #+8] \ 00000040 355F8FE2 ADR R5,??write_total_0 ;; "%d" \ 00000044 010070E3 CMN R0,#+1 \ 00000048 2A00000A BEQ ??write_total_1 49 { 50 fclose(hFile_ex3, &io_error_ex3); \ 0000004C 08009DE5 LDR R0,[SP, #+8] \ 00000050 04108DE2 ADD R1,SP,#+4 \ 00000054 0D0000EF SWI +13 51 GetFileStats("4:\\zbin\\miosd\\miosd3.file",&stat4,&ul4); \ 00000058 0D20A0E1 MOV R2,SP \ 0000005C 0C108DE2 ADD R1,SP,#+12 \ 00000060 0600A0E1 MOV R0,R6 \ 00000064 840000EF SWI +132 52 if(stat4.size>0) \ 00000068 10009DE5 LDR R0,[SP, #+16] \ 0000006C 000050E3 CMP R0,#+0 \ 00000070 2700000A BEQ ??write_total_2 53 { 54 f4=fopen("4:\\zbin\\miosd\\miosd3.file",A_ReadOnly+A_BIN,P_READ,&ul4); \ 00000074 0D30A0E1 MOV R3,SP \ 00000078 8020A0E3 MOV R2,#+128 \ 0000007C 801CA0E3 MOV R1,#+32768 \ 00000080 0600A0E1 MOV R0,R6 \ 00000084 0A0000EF SWI +10 55 fsize4=stat4.size; \ 00000088 10709DE5 LDR R7,[SP, #+16] \ 0000008C 0060A0E1 MOV R6,R0 56 char *p4=malloc(fsize4); \ 00000090 0700A0E1 MOV R0,R7 \ 00000094 140000EF SWI +20 \ 00000098 0080A0E1 MOV R8,R0 57 p4[fread(f4,p4,fsize4,&ul4)]; \ 0000009C 0D30A0E1 MOV R3,SP \ 000000A0 0720A0E1 MOV R2,R7 \ 000000A4 0810A0E1 MOV R1,R8 \ 000000A8 0600A0E1 MOV R0,R6 \ 000000AC 0B0000EF SWI +11 58 fclose(f4,&ul4); \ 000000B0 0D10A0E1 MOV R1,SP \ 000000B4 0600A0E1 MOV R0,R6 \ 000000B8 0D0000EF SWI +13 59 strcpy(gp1info, p4); \ 000000BC 0810A0E1 MOV R1,R8 \ 000000C0 0C0084E2 ADD R0,R4,#+12 \ 000000C4 1A0000EF SWI +26 60 gp1info[fsize4]='\0'; \ 000000C8 040087E0 ADD R0,R7,R4 \ 000000CC 0010A0E3 MOV R1,#+0 \ 000000D0 0C10C0E5 STRB R1,[R0, #+12] 61 mfree(p4); \ 000000D4 0800A0E1 MOV R0,R8 \ 000000D8 150000EF SWI +21 62 result2=atoi(gp1info); \ 000000DC 0C0084E2 ADD R0,R4,#+12 \ 000000E0 ........ BL atoi \ 000000E4 040084E5 STR R0,[R4, #+4] 63 result3=result1+result2; \ 000000E8 000094E5 LDR R0,[R4, #+0] \ 000000EC 041094E5 LDR R1,[R4, #+4] \ 000000F0 002081E0 ADD R2,R1,R0 \ 000000F4 000000EA B ??write_total_3 64 sprintf(txt_in, "%d", result3); 65 write_file(txt_in); 66 } 67 } 68 else 69 { 70 result3=result1; \ ??write_total_1: \ 000000F8 002094E5 LDR R2,[R4, #+0] 71 sprintf(txt_in, "%d", result3); \ ??write_total_3: \ 000000FC 0510A0E1 MOV R1,R5 \ 00000100 082084E5 STR R2,[R4, #+8] \ 00000104 2C0084E2 ADD R0,R4,#+44 \ 00000108 160000EF SWI +22 72 write_file(txt_in); \ 0000010C 2C0084E2 ADD R0,R4,#+44 \ 00000110 ........ BL write_file 73 } 74 } \ ??write_total_2: \ 00000114 34D08DE2 ADD SP,SP,#+52 ;; stack cleaning \ 00000118 F081BDE8 POP {R4-R8,PC} ;; return \ ??write_total_0: \ 0000011C 25640000 DC8 "%d",+0 \ 00000120 ........ DC32 gpinfo \ 00000124 ........ DC32 result1 \ In segment CODE, align 4, keep-with-next \ ??DataTable1: \ 00000000 ........ DC32 `?` \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 343A5C7A6269 DC8 "4:\\zbin\\miosd\\miosd3.file" \ 6E5C6D696F73 \ 645C6D696F73 \ 64332E66696C \ 6500 \ 0000001A 0000 DC8 0, 0 \ In segment DATA_C, align 1, align-sorted \ 00000000 256400 DC8 "%d" Maximum stack usage in bytes: Function CSTACK -------- ------ atoi 4 write_file 64 write_total 76 Segment part sizes: Function/Label Bytes -------------- ----- atoi 84 write_file 128 result1 76 janko 4 write_total 296 ??DataTable1 4 ? 28 ? 3 Others 24 524 bytes in segment CODE 31 bytes in segment DATA_C 80 bytes in segment DATA_Z 12 bytes in segment INITTAB 512 bytes of CODE memory (+ 24 bytes shared) 31 bytes of CONST memory 80 bytes of DATA memory Errors: none Warnings: none