############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 19/Dec/2008 01:45:04 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = K:\Pasha\elf\_MY_PROJECT_\TED_w\convert_simple.c # # Command line = K:\Pasha\elf\_MY_PROJECT_\TED_w\convert_simple.c -D # # NEWSGOLD -D ELKA -lC K:\Pasha\elf\_MY_PROJECT_\TED_w # # \Release_ELKA\List\ -o K:\Pasha\elf\_MY_PROJECT_\TED # # _w\Release_ELKA\Obj\ -s9 --no_unroll # # --no_clustering --cpu_mode arm --endian little # # --cpu ARM926EJ-S --stack_align 4 --interwork -e # # --fpu None -I "K:\Pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\INC\" --inline_threshold=9 # # List file = K:\Pasha\elf\_MY_PROJECT_\TED_w\Release_ELKA\List\co # # nvert_simple.lst # # Object file = K:\Pasha\elf\_MY_PROJECT_\TED_w\Release_ELKA\Obj\con # # vert_simple.r79 # # # # # ############################################################################## K:\Pasha\elf\_MY_PROJECT_\TED_w\convert_simple.c 1 extern unsigned long curline; 2 3 extern char *dstk; 4 extern char *ustk; 5 6 extern unsigned int FL_loader(int fin, unsigned int p); 7 extern unsigned int FL_saver(int fs, unsigned int p); 8 \ In segment CODE, align 4, keep-with-next 9 unsigned int ConvertSimple(int fin,int fs) 10 { \ ConvertSimple: \ 00000000 F34F2DE9 PUSH {R0,R1,R4-R11,LR} 11 unsigned int s; 12 unsigned int sym; 13 unsigned int d=0; 14 unsigned int i=0; 15 unsigned int eolsymb=0; 16 17 char *ds=dstk; \ 00000004 4C119FE5 LDR R1,??ConvertSimple_0 ;; dstk 18 char *us=ustk; 19 20 extern unsigned int STKSZ50; 21 22 int maxstk=STKSZ50; 23 24 s=FL_loader(fin,0xFFFFFFFF); \ 00000008 4C919FE5 LDR R9,??ConvertSimple_0+0x4 ;; curline \ 0000000C 10D04DE2 SUB SP,SP,#+16 \ 00000010 001091E5 LDR R1,[R1, #+0] \ 00000014 0040A0E3 MOV R4,#+0 \ 00000018 0C108DE5 STR R1,[SP, #+12] \ 0000001C 3C119FE5 LDR R1,??ConvertSimple_0+0x8 ;; ustk \ 00000020 0050A0E3 MOV R5,#+0 \ 00000024 001091E5 LDR R1,[R1, #+0] \ 00000028 0460A0E1 MOV R6,R4 \ 0000002C 04108DE5 STR R1,[SP, #+4] \ 00000030 2C119FE5 LDR R1,??ConvertSimple_0+0xC ;; STKSZ50 \ 00000034 04A0A0E1 MOV R10,R4 \ 00000038 001091E5 LDR R1,[R1, #+0] \ 0000003C 00108DE5 STR R1,[SP, #+0] \ 00000040 0410E0E1 MVN R1,R4 \ 00000044 ........ _BLF FL_loader,??FL_loader??rA \ 00000048 0070A0E1 MOV R7,R0 \ 0000004C 0D0000EA B ??ConvertSimple_1 25 while((sym=ds[s++])) 26 { 27 if (s>=maxstk) s=FL_loader(fin,s); 28 switch(sym) 29 { 30 case 0x0D: 31 case 0x0A: 32 if (eolsymb==sym) 33 { 34 goto LEOL; 35 } 36 if (eolsymb) break; //Пропустили второе окончание строки 37 eolsymb=sym; //Определили конец строки 38 LEOL: 39 curline++; 40 i=0; //Начало строки 41 us[d++]=0; 42 break; 43 case 0x01: 44 case 0x09: 45 sym=' '; //Пока преобразовали табуляцию в пробел \ ??ConvertSimple_2: \ 00000050 20B0A0E3 MOV R11,#+32 46 default: 47 us[d++]=sym; \ ??ConvertSimple_3: \ 00000054 08009DE5 LDR R0,[SP, #+8] \ 00000058 0840A0E1 MOV R4,R8 \ 0000005C 00B0C0E5 STRB R11,[R0, #+0] 48 i++; \ 00000060 015085E2 ADD R5,R5,#+1 49 if (i>255) \ 00000064 400F55E3 CMP R5,#+256 \ 00000068 2100002A BCS ??ConvertSimple_4 50 { 51 goto LEOL; //Слишком длинная строка 52 } 53 break; 54 } 55 if (d>=maxstk) d=FL_saver(fs,d); \ ??ConvertSimple_5: \ 0000006C 00009DE5 LDR R0,[SP, #+0] \ 00000070 000054E1 CMP R4,R0 \ 00000074 0300003A BCC ??ConvertSimple_1 \ 00000078 14009DE5 LDR R0,[SP, #+20] \ 0000007C 0410A0E1 MOV R1,R4 \ 00000080 ........ _BLF FL_saver,??FL_saver??rA \ 00000084 0040A0E1 MOV R4,R0 \ ??ConvertSimple_1: \ 00000088 0C009DE5 LDR R0,[SP, #+12] \ 0000008C 04109DE5 LDR R1,[SP, #+4] \ 00000090 00B0D7E7 LDRB R11,[R7, +R0] \ 00000094 017087E2 ADD R7,R7,#+1 \ 00000098 011084E0 ADD R1,R4,R1 \ 0000009C 08108DE5 STR R1,[SP, #+8] \ 000000A0 018084E2 ADD R8,R4,#+1 \ 000000A4 00005BE3 CMP R11,#+0 \ 000000A8 1900000A BEQ ??ConvertSimple_6 \ 000000AC 00009DE5 LDR R0,[SP, #+0] \ 000000B0 000057E1 CMP R7,R0 \ 000000B4 0300003A BCC ??ConvertSimple_7 \ 000000B8 10009DE5 LDR R0,[SP, #+16] \ 000000BC 0710A0E1 MOV R1,R7 \ 000000C0 ........ _BLF FL_loader,??FL_loader??rA \ 000000C4 0070A0E1 MOV R7,R0 \ ??ConvertSimple_7: \ 000000C8 01005BE2 SUBS R0,R11,#+1 \ 000000CC 08005012 SUBSNE R0,R0,#+8 \ 000000D0 DEFFFF0A BEQ ??ConvertSimple_2 \ 000000D4 010050E2 SUBS R0,R0,#+1 \ 000000D8 03005012 SUBSNE R0,R0,#+3 \ 000000DC DCFFFF1A BNE ??ConvertSimple_3 \ 000000E0 0B0056E1 CMP R6,R11 \ 000000E4 0200000A BEQ ??ConvertSimple_4 \ 000000E8 000056E3 CMP R6,#+0 \ 000000EC DEFFFF1A BNE ??ConvertSimple_5 \ 000000F0 0B60A0E1 MOV R6,R11 \ ??ConvertSimple_4: \ 000000F4 000099E5 LDR R0,[R9, #+0] \ 000000F8 0050A0E3 MOV R5,#+0 \ 000000FC 010080E2 ADD R0,R0,#+1 \ 00000100 000089E5 STR R0,[R9, #+0] \ 00000104 04009DE5 LDR R0,[SP, #+4] \ 00000108 00A0C4E7 STRB R10,[R4, +R0] \ 0000010C 014084E2 ADD R4,R4,#+1 \ 00000110 D5FFFFEA B ??ConvertSimple_5 56 } 57 if (i) \ ??ConvertSimple_6: \ 00000114 000055E3 CMP R5,#+0 \ 00000118 0400000A BEQ ??ConvertSimple_8 58 { 59 //Незавершенная строка 60 us[d++]=0; \ 0000011C 00A0C1E5 STRB R10,[R1, #+0] 61 curline++; \ 00000120 000099E5 LDR R0,[R9, #+0] \ 00000124 0840A0E1 MOV R4,R8 \ 00000128 010080E2 ADD R0,R0,#+1 \ 0000012C 000089E5 STR R0,[R9, #+0] 62 } 63 if (d>=maxstk) d=FL_saver(fs,d); \ ??ConvertSimple_8: \ 00000130 00009DE5 LDR R0,[SP, #+0] \ 00000134 000054E1 CMP R4,R0 \ 00000138 0300003A BCC ??ConvertSimple_9 \ 0000013C 14009DE5 LDR R0,[SP, #+20] \ 00000140 0410A0E1 MOV R1,R4 \ 00000144 ........ _BLF FL_saver,??FL_saver??rA \ 00000148 0040A0E1 MOV R4,R0 64 return(d); \ ??ConvertSimple_9: \ 0000014C 0400A0E1 MOV R0,R4 \ 00000150 18D08DE2 ADD SP,SP,#+24 \ 00000154 F08FBDE8 POP {R4-R11,PC} ;; return \ ??ConvertSimple_0: \ 00000158 ........ DC32 dstk \ 0000015C ........ DC32 curline \ 00000160 ........ DC32 ustk \ 00000164 ........ DC32 STKSZ50 65 } 66 67 68 69 70 Maximum stack usage in bytes: Function CSTACK -------- ------ ConvertSimple 60 Segment part sizes: Function/Label Bytes -------------- ----- ConvertSimple 360 Others 28 388 bytes in segment CODE 360 bytes of CODE memory (+ 28 bytes shared) Errors: none Warnings: none