############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.41A/W32 EVALUATION 10/Feb/2008 21:37:53 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\_MY_PROJECT\TextReader\history.c # # Command line = D:\Pasha\elf\_MY_PROJECT\TextReader\history.c -lC # # D:\Pasha\elf\_MY_PROJECT\TextReader\Release_SGOLD\Li # # st\ -o D:\Pasha\elf\_MY_PROJECT\TextReader\Release_S # # GOLD\Obj\ -s9 --cpu_mode arm --endian little --cpu # # ARM926EJ-S --stack_align 4 --interwork -e --fpu # # None --dlib_config "D:\Pasha\ARM_Embedded_Workbench\ # # Embedded Workbench 4.0 Evaluation\ARM\LIB\dl5tpainl8 # # n.h" -I "D:\Pasha\ARM_Embedded_Workbench\Embedded # # Workbench 4.0 Evaluation\ARM\INC\" # # --inline_threshold=2 # # List file = D:\Pasha\elf\_MY_PROJECT\TextReader\Release_SGOLD\Li # # st\history.lst # # Object file = D:\Pasha\elf\_MY_PROJECT\TextReader\Release_SGOLD\Ob # # j\history.r79 # # # # # ############################################################################## D:\Pasha\elf\_MY_PROJECT\TextReader\history.c 1 #include "..\inc\swilib.h" 2 #include "main.h" 3 extern char *file; 4 extern char *file_name; 5 extern int curpos; 6 extern int atoi(char *attr); 7 extern const char per_s[]; 8 extern const char HIST_PATH[128]; 9 //extern int file_size; 10 //-----------------LOAD INI-------------------// 11 /* 12 format 13 path /?codepage?/ position 14 */ 15 /********************** 16 *.hst ,потом может сделаю задание как параметра если понадобится... 17 **********************/ \ In segment CODE, align 4, keep-with-next 18 void LoadINI() 19 { 20 unsigned int err; 21 int plhandle; 22 char *mem; 23 char *pos; 24 char path[256];//="0:\\zbin\\TextReader\\history\\"; 25 sprintf(path,per_s,HIST_PATH); \ LoadINI: \ 00000000 ........ LDR R1,??DataTable8 ;; per_s \ 00000004 F0402DE9 PUSH {R4-R7,LR} \ 00000008 ........ LDR R6,??DataTable7 ;; HIST_PATH \ 0000000C 41DF4DE2 SUB SP,SP,#+260 \ 00000010 0620A0E1 MOV R2,R6 \ 00000014 04008DE2 ADD R0,SP,#+4 \ 00000018 160000EF SWI +22 26 strcat(path,file_name); \ 0000001C ........ LDR R0,??DataTable9 ;; file_name \ 00000020 001090E5 LDR R1,[R0, #+0] \ 00000024 04008DE2 ADD R0,SP,#+4 \ 00000028 170000EF SWI +23 27 strcat(path,".hst");//history \ 0000002C ........ LDR R1,??DataTable6 ;; `?` \ 00000030 04008DE2 ADD R0,SP,#+4 \ 00000034 170000EF SWI +23 28 29 if(isdir(HIST_PATH,&err)) \ 00000038 0D10A0E1 MOV R1,SP \ 0000003C 0600A0E1 MOV R0,R6 \ 00000040 910000EF SWI +145 \ 00000044 000050E3 CMP R0,#+0 \ 00000048 0600000A BEQ ??LoadINI_0 30 plhandle = fopen(/* "0:\\TR_history2.txt"*/path, A_ReadOnly + A_BIN, P_READ, & err ); \ 0000004C 0D30A0E1 MOV R3,SP \ 00000050 8020A0E3 MOV R2,#+128 \ 00000054 801CA0E3 MOV R1,#+32768 \ 00000058 04008DE2 ADD R0,SP,#+4 \ 0000005C 0A0000EF SWI +10 \ 00000060 0040A0E1 MOV R4,R0 \ 00000064 020000EA B ??LoadINI_1 31 else //ShowMSG(1,(int)"Directory not found!"); 32 mkdir(HIST_PATH,&err); \ ??LoadINI_0: \ 00000068 0D10A0E1 MOV R1,SP \ 0000006C 0600A0E1 MOV R0,R6 \ 00000070 100000EF SWI +16 33 if(plhandle!=-1 ) \ ??LoadINI_1: \ 00000074 010074E3 CMN R4,#+1 \ 00000078 1200000A BEQ ??LoadINI_2 34 { 35 mem=malloc(100); 36 fread(plhandle,mem,99,&err); 37 pos=strstr(mem,file)+strlen(file)+1; \ 0000007C ........ LDR R6,??DataTable11 ;; file \ 00000080 6400A0E3 MOV R0,#+100 \ 00000084 140000EF SWI +20 \ 00000088 0050A0E1 MOV R5,R0 \ 0000008C 0D30A0E1 MOV R3,SP \ 00000090 6320A0E3 MOV R2,#+99 \ 00000094 0510A0E1 MOV R1,R5 \ 00000098 0400A0E1 MOV R0,R4 \ 0000009C 0B0000EF SWI +11 \ 000000A0 001096E5 LDR R1,[R6, #+0] \ 000000A4 0500A0E1 MOV R0,R5 \ 000000A8 180100EF SWI +280 \ 000000AC 0070A0E1 MOV R7,R0 \ 000000B0 000096E5 LDR R0,[R6, #+0] \ 000000B4 1B0000EF SWI +27 \ 000000B8 070080E0 ADD R0,R0,R7 \ 000000BC 010080E2 ADD R0,R0,#+1 38 curpos=atoi(pos); \ 000000C0 ........ _BLF atoi,??atoi??rA \ 000000C4 000000EA B ??LoadINI_3 39 } 40 else curpos=1; \ ??LoadINI_2: \ 000000C8 0100A0E3 MOV R0,#+1 \ ??LoadINI_3: \ 000000CC ........ LDR R1,??DataTable10 ;; curpos \ 000000D0 000081E5 STR R0,[R1, #+0] 41 fclose(plhandle,&err); \ 000000D4 0D10A0E1 MOV R1,SP \ 000000D8 0400A0E1 MOV R0,R4 \ 000000DC 0D0000EF SWI +13 42 mfree(mem); \ 000000E0 0500A0E1 MOV R0,R5 \ 000000E4 150000EF SWI +21 43 } \ 000000E8 41DF8DE2 ADD SP,SP,#+260 \ 000000EC F080BDE8 POP {R4-R7,PC} ;; return 44 45 \ In segment CODE, align 4, keep-with-next 46 void SaveINI()//save history 47 { \ SaveINI: \ 00000000 70402DE9 PUSH {R4-R6,LR} \ 00000004 41DF4DE2 SUB SP,SP,#+260 48 unsigned int err; 49 int f; 50 char *ss=malloc(300); 51 char path[256]; 52 sprintf(path,per_s,HIST_PATH); 53 strcat(path,file_name); 54 strcat(path,".hst");//history \ 00000008 ........ LDR R5,??DataTable6 ;; `?` \ 0000000C 4B0FA0E3 MOV R0,#+300 \ 00000010 140000EF SWI +20 \ 00000014 ........ LDR R2,??DataTable7 ;; HIST_PATH \ 00000018 ........ LDR R1,??DataTable8 ;; per_s \ 0000001C 0040A0E1 MOV R4,R0 \ 00000020 04008DE2 ADD R0,SP,#+4 \ 00000024 160000EF SWI +22 \ 00000028 ........ LDR R0,??DataTable9 ;; file_name \ 0000002C 001090E5 LDR R1,[R0, #+0] \ 00000030 04008DE2 ADD R0,SP,#+4 \ 00000034 170000EF SWI +23 \ 00000038 0510A0E1 MOV R1,R5 \ 0000003C 04008DE2 ADD R0,SP,#+4 \ 00000040 170000EF SWI +23 55 // ShowMSG(2,(int)path); 56 f = fopen( path, A_ReadWrite + A_BIN+A_Create /*+ A_Append*/, P_READ + P_WRITE, & err ); \ 00000044 0D30A0E1 MOV R3,SP \ 00000048 602FA0E3 MOV R2,#+384 \ 0000004C 0210A0E3 MOV R1,#+2 \ 00000050 811C81E3 ORR R1,R1,#0x8100 \ 00000054 04008DE2 ADD R0,SP,#+4 \ 00000058 0A0000EF SWI +10 \ 0000005C 0060A0E1 MOV R6,R0 57 if ( f ==-1 ) \ 00000060 010076E3 CMN R6,#+1 58 { 59 fclose( f, & err ); \ 00000064 0D10A001 MOVEQ R1,SP \ 00000068 0000E003 MVNEQ R0,#+0 \ 0000006C 1200000A BEQ ??SaveINI_0 60 return; 61 } 62 sprintf(ss,"%s %i\n",file,curpos+1); \ 00000070 ........ LDR R0,??DataTable10 ;; curpos \ 00000074 081085E2 ADD R1,R5,#+8 \ 00000078 000090E5 LDR R0,[R0, #+0] \ 0000007C 013080E2 ADD R3,R0,#+1 \ 00000080 ........ LDR R0,??DataTable11 ;; file \ 00000084 002090E5 LDR R2,[R0, #+0] \ 00000088 0400A0E1 MOV R0,R4 \ 0000008C 160000EF SWI +22 63 fwrite(f,ss,strlen(ss),&err); \ 00000090 0400A0E1 MOV R0,R4 \ 00000094 1B0000EF SWI +27 \ 00000098 0D30A0E1 MOV R3,SP \ 0000009C 0020A0E1 MOV R2,R0 \ 000000A0 0410A0E1 MOV R1,R4 \ 000000A4 0600A0E1 MOV R0,R6 \ 000000A8 0C0000EF SWI +12 64 mfree(ss); \ 000000AC 0400A0E1 MOV R0,R4 \ 000000B0 150000EF SWI +21 65 fclose(f,&err); \ 000000B4 0D10A0E1 MOV R1,SP \ 000000B8 0600A0E1 MOV R0,R6 \ ??SaveINI_0: \ 000000BC 0D0000EF SWI +13 66 } \ 000000C0 41DF8DE2 ADD SP,SP,#+260 \ 000000C4 7080BDE8 POP {R4-R6,PC} ;; return \ In segment CODE, align 4, keep-with-next \ ??DataTable6: \ 00000000 ........ DC32 `?` \ In segment CODE, align 4, keep-with-next \ ??DataTable7: \ 00000000 ........ DC32 HIST_PATH \ In segment CODE, align 4, keep-with-next \ ??DataTable8: \ 00000000 ........ DC32 per_s \ In segment CODE, align 4, keep-with-next \ ??DataTable9: \ 00000000 ........ DC32 file_name \ In segment CODE, align 4, keep-with-next \ ??DataTable10: \ 00000000 ........ DC32 curpos \ In segment CODE, align 4, keep-with-next \ ??DataTable11: \ 00000000 ........ DC32 file \ In segment DATA_C, align 4, align-sorted \ `?`: \ 00000000 2E68737400 DC8 ".hst" \ 00000005 000000 DC8 0, 0, 0 \ 00000008 25732025690A DC8 "%s %i\012" \ 00 \ 0000000F 00 DC8 0 67 Maximum stack usage in bytes: Function CSTACK -------- ------ LoadINI 280 SaveINI 276 Segment part sizes: Function/Label Bytes -------------- ----- LoadINI 240 SaveINI 200 ??DataTable6 4 ??DataTable7 4 ??DataTable8 4 ??DataTable9 4 ??DataTable10 4 ??DataTable11 4 ? 16 Others 20 484 bytes in segment CODE 16 bytes in segment DATA_C 464 bytes of CODE memory (+ 20 bytes shared) 16 bytes of CONST memory Errors: none Warnings: none