////////////////////////////////////////////////////////////////////////////// // / // 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.s79 / // / // / ////////////////////////////////////////////////////////////////////////////// NAME gprs_write RTMODEL "StackAlign4", "USED" RTMODEL "__cpu_mode", "__pcs__interwork" RTMODEL "__data_model", "absolute" RTMODEL "__endian", "little" RTMODEL "__rt_version", "6" RSEG CSTACK:DATA:NOROOT(2) ??DataTable0 EQU 0 MULTWEAK ??atoi??rT MULTWEAK ??write_file??rT MULTWEAK ??write_total??rT PUBWEAK ?init?tab?DATA_Z PUBLIC atoi FUNCTION atoi,0203H LOCFRAME CSTACK, 4, STACK PUBLIC gp1info PUBLIC janko PUBLIC result1 PUBLIC result2 PUBLIC result3 PUBLIC txt_in PUBLIC write_file FUNCTION write_file,0203H LOCFRAME CSTACK, 64, STACK PUBLIC write_total FUNCTION write_total,0201H LOCFRAME CSTACK, 76, STACK CFI Names cfiNames0 CFI StackFrame CFA R13 HUGEDATA CFI Resource R0:32, R1:32, R2:32, R3:32, R4:32, R5:32, R6:32, R7:32 CFI Resource R8:32, R9:32, R10:32, R11:32, R12:32, CPSR:32, R13:32 CFI Resource R14:32, SPSR:32 CFI VirtualResource ?RET:32 CFI EndNames cfiNames0 CFI Common cfiCommon0 Using cfiNames0 CFI CodeAlign 2 CFI DataAlign 4 CFI ReturnAddress ?RET CODE CFI CFA R13+0 CFI R0 Undefined CFI R1 Undefined CFI R2 Undefined CFI R3 Undefined CFI R4 SameValue CFI R5 SameValue CFI R6 SameValue CFI R7 SameValue CFI R8 SameValue CFI R9 SameValue CFI R10 SameValue CFI R11 SameValue CFI R12 Undefined CFI CPSR SameValue CFI R14 Undefined CFI SPSR SameValue CFI ?RET R14 CFI EndCommon cfiCommon0 CFI Common cfiCommon1 Using cfiNames0 CFI CodeAlign 4 CFI DataAlign 4 CFI ReturnAddress ?RET CODE CFI CFA R13+0 CFI R0 Undefined CFI R1 Undefined CFI R2 Undefined CFI R3 Undefined CFI R4 SameValue CFI R5 SameValue CFI R6 SameValue CFI R7 SameValue CFI R8 SameValue CFI R9 SameValue CFI R10 SameValue CFI R11 SameValue CFI R12 Undefined CFI CPSR SameValue CFI R14 Undefined CFI SPSR SameValue CFI ?RET R14 CFI EndCommon cfiCommon1 atoi SYMBOL "atoi" ??atoi??rT SYMBOL "??rT", atoi write_file SYMBOL "write_file" ??write_file??rT SYMBOL "??rT", write_file write_total SYMBOL "write_total" ??write_total??rT SYMBOL "??rT", write_total EXTERN gpinfo RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock0 Using cfiCommon0 CFI NoFunction THUMB ??atoi??rT: BX PC Nop CFI EndBlock cfiBlock0 REQUIRE atoi // 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 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock1 Using cfiCommon1 CFI Function atoi ARM // 9 int atoi(char *attr) // 10 { atoi: PUSH {R4} CFI R4 Frame(CFA, -4) CFI CFA R13+4 // 11 int ret=0; MOV R1,#+0 // 12 int neg=1; MOV R2,#+1 // 13 for (int k=0; ; k++) MOV R3,#+0 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: MOV R12,R4 CMP R12,#+58 BCS ??atoi_2 MOV R4,#+10 MLA R1,R4,R1,R12 SUB R1,R1,#+48 ??atoi_3: ADD R3,R3,#+1 ??atoi_0: LDRB R4,[R3, +R0] CMP R4,#+48 BCS ??atoi_1 ??atoi_2: CMP R4,#+45 MVNEQ R2,#+0 BEQ ??atoi_3 POP {R4} CFI R4 SameValue CFI CFA R13+0 MUL R0,R2,R1 BX LR ;; return CFI EndBlock cfiBlock1 // 16 } // 17 } RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock2 Using cfiCommon0 CFI NoFunction THUMB ??write_file??rT: BX PC Nop CFI EndBlock cfiBlock2 REQUIRE write_file // 18 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock3 Using cfiCommon1 CFI Function write_file ARM // 19 void write_file(char *wer) // 20 { write_file: PUSH {R4,R5,LR} CFI ?RET Frame(CFA, -4) CFI R5 Frame(CFA, -8) CFI R4 Frame(CFA, -12) CFI CFA R13+12 // 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); LDR R5,??DataTable1 ;; `?` SUB SP,SP,#+52 CFI CFA R13+64 MOV R4,R0 MOV R1,#+0 STR R1,[SP, #+0] ADD R2,SP,#+8 ADD R1,SP,#+12 MOV R0,R5 SWI +132 // 26 hFile2 = fopen("4:\\zbin\\miosd\\miosd3.file",A_ReadWrite+A_Create+A_Truncate+ A_BIN,P_READ+P_WRITE, &io_error2); MOV R3,SP MOV R2,#+384 MOV R1,#+2 ORR R1,R1,#0x8300 MOV R0,R5 SWI +10 STR R0,[SP, #+4] // 27 if(hFile2!=-1) LDR R0,[SP, #+4] CMN R0,#+1 BEQ ??write_file_0 // 28 { // 29 fwrite(hFile2, wer, strlen(wer), &io_error2); MOV R0,R4 SWI +27 MOV R3,SP MOV R2,R0 LDR R0,[SP, #+4] MOV R1,R4 SWI +12 // 30 fclose(hFile2, &io_error2); LDR R0,[SP, #+4] MOV R1,SP SWI +13 // 31 } // 32 } ??write_file_0: ADD SP,SP,#+52 ;; stack cleaning CFI CFA R13+12 POP {R4,R5,PC} ;; return CFI EndBlock cfiBlock3 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock4 Using cfiCommon0 CFI NoFunction THUMB ??write_total??rT: BX PC Nop CFI EndBlock cfiBlock4 REQUIRE write_total RSEG DATA_Z:DATA:SORT:NOROOT(2) result1: DS8 4 result2: DS8 4 result3: DS8 4 gp1info: DS8 32 // 33 // 34 char txt_in[32]; txt_in: DS8 32 RSEG DATA_Z:DATA:SORT:NOROOT(2) janko: DS8 4 // 35 RSEG CODE:CODE:NOROOT(2) CFI Block cfiBlock5 Using cfiCommon1 CFI Function write_total ARM // 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: LDR R0,??write_total_0+0x4 ;; gpinfo PUSH {R4-R8,LR} CFI ?RET Frame(CFA, -4) CFI R8 Frame(CFA, -8) CFI R7 Frame(CFA, -12) CFI R6 Frame(CFA, -16) CFI R5 Frame(CFA, -20) CFI R4 Frame(CFA, -24) CFI CFA R13+24 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); LDR R6,??DataTable1 ;; `?` SUB SP,SP,#+52 CFI CFA R13+76 BL atoi STR R0,[R4, #+0] MOV R1,#+0 STR R1,[SP, #+4] ADD R3,SP,#+4 MOV R2,#+128 MOV R1,#+32768 MOV R0,R6 SWI +10 STR R0,[SP, #+8] // 48 if(hFile_ex3!=-1) LDR R0,[SP, #+8] ADR R5,??write_total_0 ;; "%d" CMN R0,#+1 BEQ ??write_total_1 // 49 { // 50 fclose(hFile_ex3, &io_error_ex3); LDR R0,[SP, #+8] ADD R1,SP,#+4 SWI +13 // 51 GetFileStats("4:\\zbin\\miosd\\miosd3.file",&stat4,&ul4); MOV R2,SP ADD R1,SP,#+12 MOV R0,R6 SWI +132 // 52 if(stat4.size>0) LDR R0,[SP, #+16] CMP R0,#+0 BEQ ??write_total_2 // 53 { // 54 f4=fopen("4:\\zbin\\miosd\\miosd3.file",A_ReadOnly+A_BIN,P_READ,&ul4); MOV R3,SP MOV R2,#+128 MOV R1,#+32768 MOV R0,R6 SWI +10 // 55 fsize4=stat4.size; LDR R7,[SP, #+16] MOV R6,R0 // 56 char *p4=malloc(fsize4); MOV R0,R7 SWI +20 MOV R8,R0 // 57 p4[fread(f4,p4,fsize4,&ul4)]; MOV R3,SP MOV R2,R7 MOV R1,R8 MOV R0,R6 SWI +11 // 58 fclose(f4,&ul4); MOV R1,SP MOV R0,R6 SWI +13 // 59 strcpy(gp1info, p4); MOV R1,R8 ADD R0,R4,#+12 SWI +26 // 60 gp1info[fsize4]='\0'; ADD R0,R7,R4 MOV R1,#+0 STRB R1,[R0, #+12] // 61 mfree(p4); MOV R0,R8 SWI +21 // 62 result2=atoi(gp1info); ADD R0,R4,#+12 BL atoi STR R0,[R4, #+4] // 63 result3=result1+result2; LDR R0,[R4, #+0] LDR R1,[R4, #+4] ADD R2,R1,R0 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: LDR R2,[R4, #+0] // 71 sprintf(txt_in, "%d", result3); ??write_total_3: MOV R1,R5 STR R2,[R4, #+8] ADD R0,R4,#+44 SWI +22 // 72 write_file(txt_in); ADD R0,R4,#+44 BL write_file // 73 } // 74 } ??write_total_2: ADD SP,SP,#+52 ;; stack cleaning CFI CFA R13+24 POP {R4-R8,PC} ;; return DATA ??write_total_0: DC8 "%d",+0 DC32 gpinfo DC32 result1 CFI EndBlock cfiBlock5 RSEG CODE:CODE:NOROOT(2) DATA ??DataTable1: DC32 `?` RSEG INITTAB:CODE:ROOT(2) DATA ?init?tab?DATA_Z: DCD sfe(DATA_Z) - sfb(DATA_Z), sfb(DATA_Z), sfb(DATA_Z) RSEG DATA_C:CONST:SORT:NOROOT(2) `?`: DATA DC8 "4:\\zbin\\miosd\\miosd3.file" DC8 0, 0 RSEG DATA_C:CONST:SORT:NOROOT(0) DATA DC8 "%d" END // // 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