📄 lpc2000_dbg_printf.lst
字号:
127: case 'C':
0000010A L_19:
129: format_flag = va_arg(ap,int);
0000010A 3604 ADD R6,#0x4
0000010C 1C30 MOV R0,R6 ; ap
0000010E 3804 SUB R0,#0x4
00000110 6805 LDR R5,[R0,#0x0]
00000112 062D LSL R5,R5,#0x18
00000114 0E2D LSR R5,R5,#0x18
133: default:
00000116 L_20:
134: myputchar(format_flag);
00000116 1C28 MOV R0,R5 ; format_flag
00000118 0600 LSL R0,R0,#0x18 ; format_flag
0000011A 0E00 LSR R0,R0,#0x18
0000011C F7FF BL myputchar?T ; T=0x0001 (1)
0000011E FF70 BL myputchar?T ; T=0x0001 (2)
135: continue;
00000120 E77C B L_10 ; T=0x0000001C
141: case 's':
00000122 L_29:
142: ptr = (unsigned char*)va_arg(ap,char *);
00000122 3604 ADD R6,#0x4
00000124 1C30 MOV R0,R6 ; ap
00000126 3804 SUB R0,#0x4
00000128 6804 LDR R4,[R0,#0x0]
143: while(*ptr) { myputchar(*ptr); ptr++; }
0000012A E000 B L_32 ; T=0x0000012E
0000012C L_34:
0000012C 1C20 MOV R0,R4 ; ptr
0000012E 7800 LDRB R0,[R0,#0x0] ; ptr
00000130 F7FF BL myputchar?T ; T=0x0001 (1)
00000132 FF66 BL myputchar?T ; T=0x0001 (2)
00000134 3401 ADD R4,#0x1
00000136 L_32:
00000136 1C20 MOV R0,R4 ; ptr
ARM COMPILER V2.42, lpc2000_dbg_printf 27/03/06 10:45:50 PAGE 9
00000138 7800 LDRB R0,[R0,#0x0] ; ptr
0000013A 2800 CMP R0,#0x0
0000013C D1F6 BNE L_34 ; T=0x0000012C
144: continue;
0000013E E76D B L_10 ; T=0x0000001C
165: case 'D':
00000140 L_21:
167: issigned=1;
00000140 2101 MOV R1,#0x1
00000142 A804 ADD R0,R13,#0x10
00000144 7001 STRB R1,[R0,#0x0] ; issigned
177: goto CONVERSION_LOOP;
00000146 E75A B CONVERSION_LOOP ; T=0xFFFFFFFE
180: case 'X':
00000148 L_25:
182: base = 16;
00000148 2110 MOV R1,#0x10
0000014A A803 ADD R0,R13,#0xC
0000014C 8001 STRH R1,[R0,#0x0] ; base
185: CONVERSION_LOOP:
0000014E CONVERSION_LOOP:
187: if(issigned) //Signed types
0000014E A804 ADD R0,R13,#0x10
00000150 7800 LDRB R0,[R0,#0x0] ; issigned
00000152 2800 CMP R0,#0x0
00000154 D015 BEQ L_37 ; T=0x00000182
190: if(islong) { s_val = va_arg(ap,long); }
00000156 A805 ADD R0,R13,#0x14
00000158 7800 LDRB R0,[R0,#0x0] ; islong
0000015A 2800 CMP R0,#0x0
0000015C D001 BEQ L_38 ; T=0x00000162
0000015E 3604 ADD R6,#0x4
00000160 1C30 MOV R0,R6 ; ap
00000162 3804 SUB R0,#0x4
00000164 6800 LDR R0,[R0,#0x0]
00000166 9007 STR R0,[R13,#0x1C] ; s_val
00000168 E000 B L_39 ; T=0x0000016C
0000016A L_38:
191: else { s_val = va_arg(ap,int); }
0000016A 3604 ADD R6,#0x4
0000016C 1C30 MOV R0,R6 ; ap
0000016E 3804 SUB R0,#0x4
00000170 6800 LDR R0,[R0,#0x0]
00000172 9007 STR R0,[R13,#0x1C] ; s_val
00000174 L_39:
196: if(s_val < 0) //Value negativ ?
00000174 9807 LDR R0,[R13,#0x1C] ; s_val
00000176 2800 CMP R0,#0x0
00000178 DA00 BGE L_40 ; T=0x0000017C
198: s_val = - s_val; //Make it positiv
0000017A 4240 NEG R0,R0
0000017C 9007 STR R0,[R13,#0x1C] ; s_val
199: myputchar('-'); //Output sign
0000017E 202D MOV R0,#0x2D
00000180 F7FF BL myputchar?T ; T=0x0001 (1)
00000182 FF3E BL myputchar?T ; T=0x0001 (2)
200: }
00000184 L_40:
202: u_val = (unsigned long)s_val;
00000184 9807 LDR R0,[R13,#0x1C] ; s_val
00000186 9006 STR R0,[R13,#0x18] ; u_val
203: }
00000188 E00A B L_41 ; T=0x000001A0
0000018A L_37:
207: if(islong) { u_val = va_arg(ap,unsigned long); }
0000018A A805 ADD R0,R13,#0x14
ARM COMPILER V2.42, lpc2000_dbg_printf 27/03/06 10:45:50 PAGE 10
0000018C 7800 LDRB R0,[R0,#0x0] ; islong
0000018E 2800 CMP R0,#0x0
00000190 D001 BEQ L_42 ; T=0x00000196
00000192 3604 ADD R6,#0x4
00000194 1C30 MOV R0,R6 ; ap
00000196 3804 SUB R0,#0x4
00000198 6800 LDR R0,[R0,#0x0]
0000019A 9006 STR R0,[R13,#0x18] ; u_val
0000019C E000 B L_41 ; T=0x000001A0
0000019E L_42:
208: else { u_val = va_arg(ap,unsigned int); }
0000019E 3604 ADD R6,#0x4
000001A0 1C30 MOV R0,R6 ; ap
000001A2 3804 SUB R0,#0x4
000001A4 6800 LDR R0,[R0,#0x0]
000001A6 9006 STR R0,[R13,#0x18] ; u_val
212: }
000001A8 L_41:
214: ptr = scratch + SCRATCH;
000001A8 AC03 ADD R4,R13,#0xC
215: *--ptr = 0;
000001AA 2100 MOV R1,#0x0
000001AC 1C20 MOV R0,R4 ; ptr
000001AE 3801 SUB R0,#0x1
000001B0 1C04 MOV R4,R0 ; ptr
000001B2 7001 STRB R1,[R0,#0x0]
216: do
000001B4 L_44:
217: {
000001B4 ; SCOPE-START
218: char ch = u_val % base + '0';
000001B4 A803 ADD R0,R13,#0xC
000001B6 8800 LDRH R0,[R0,#0x0] ; base
000001B8 1C01 MOV R1,R0
000001BA 9806 LDR R0,[R13,#0x18] ; u_val
000001BC F7FF BL ?C?UDIV?T ; T=0x0001 (1) ; ?C?UDIV?T
000001BE FF20 BL ?C?UDIV?T ; T=0x0001 (2) ; ?C?UDIV?T
000001C0 1C01 MOV R1,R0
000001C2 3130 ADD R1,#0x30
000001C4 0609 LSL R1,R1,#0x18
000001C6 0E09 LSR R1,R1,#0x18
000001C8 A80A ADD R0,R13,#0x28
000001CA 7001 STRB R1,[R0,#0x0] ; ch
220: if (ch > '9')
000001CC 0609 LSL R1,R1,#0x18
000001CE 0E09 LSR R1,R1,#0x18
000001D0 2939 CMP R1,#0x39
000001D2 DD03 BLE L_48 ; T=0x000001DC
222: ch += 'a' - '9' - 1;
000001D4 7801 LDRB R1,[R0,#0x0] ; ch
000001D6 3127 ADD R1,#0x27
000001D8 7001 STRB R1,[R0,#0x0] ; ch
224: ch-=0x20;
000001DA A80A ADD R0,R13,#0x28
000001DC 7801 LDRB R1,[R0,#0x0] ; ch
000001DE 3920 SUB R1,#0x20
000001E0 A80A ADD R0,R13,#0x28
000001E2 7001 STRB R1,[R0,#0x0] ; ch
226: }
000001E4 L_48:
228: *--ptr = ch;
000001E4 A80A ADD R0,R13,#0x28
000001E6 7801 LDRB R1,[R0,#0x0] ; ch
000001E8 1C20 MOV R0,R4 ; ptr
000001EA 3801 SUB R0,#0x1
000001EC 1C04 MOV R4,R0 ; ptr
ARM COMPILER V2.42, lpc2000_dbg_printf 27/03/06 10:45:50 PAGE 11
000001EE 7001 STRB R1,[R0,#0x0]
229: u_val /= base;
000001F0 A803 ADD R0,R13,#0xC
000001F2 8800 LDRH R0,[R0,#0x0] ; base
000001F4 1C01 MOV R1,R0
000001F6 9806 LDR R0,[R13,#0x18] ; u_val
000001F8 F7FF BL ?C?UDIV?T ; T=0x0001 (1) ; ?C?UDIV?T
000001FA FF02 BL ?C?UDIV?T ; T=0x0001 (2) ; ?C?UDIV?T
000001FC 1C08 MOV R0,R1
000001FE 9006 STR R0,[R13,#0x18] ; u_val
232: if(width) width--; //calculate number of padding chars
00000200 A809 ADD R0,R13,#0x24
00000202 7801 LDRB R1,[R0,#0x0] ; width
00000204 2900 CMP R1,#0x0
00000206 D0FD BEQ L_46 ; T=0x00000204
00000208 3901 SUB R1,#0x1
0000020A 7001 STRB R1,[R0,#0x0] ; width
0000020C ; SCOPE-END
234: } while (u_val);
0000020C L_46:
0000020C 9806 LDR R0,[R13,#0x18] ; u_val
0000020E 2800 CMP R0,#0x0
00000210 D1D0 BNE L_44 ; T=0x000001B4
237: while(width--) *--ptr = fill; //insert padding chars
00000212 E001 B L_50 ; T=0x00000218
00000214 L_52:
00000214 A808 ADD R0,R13,#0x20
00000216 7801 LDRB R1,[R0,#0x0] ; fill
00000218 1C20 MOV R0,R4 ; ptr
0000021A 3801 SUB R0,#0x1
0000021C 1C04 MOV R4,R0 ; ptr
0000021E 7001 STRB R1,[R0,#0x0]
00000220 L_50:
00000220 A909 ADD R1,R13,#0x24
00000222 7808 LDRB R0,[R1,#0x0] ; width
00000224 1C02 MOV R2,R0
00000226 3A01 SUB R2,#0x1
00000228 700A STRB R2,[R1,#0x0] ; width
0000022A 2800 CMP R0,#0x0
0000022C D1F2 BNE L_52 ; T=0x00000214
240: while(*ptr) { myputchar(*ptr); ptr++; }
0000022E E000 B L_54 ; T=0x00000232
00000230 L_56:
00000230 1C20 MOV R0,R4 ; ptr
00000232 7800 LDRB R0,[R0,#0x0] ; ptr
00000234 F7FF BL myputchar?T ; T=0x0001 (1)
00000236 FEE4 BL myputchar?T ; T=0x0001 (2)
00000238 3401 ADD R4,#0x1
0000023A L_54:
0000023A 1C20 MOV R0,R4 ; ptr
0000023C 7800 LDRB R0,[R0,#0x0] ; ptr
0000023E 2800 CMP R0,#0x0
00000240 D1F6 BNE L_56 ; T=0x00000230
242: }
00000242 E6EB B L_10 ; T=0x0000001C
00000244 ; SCOPE-END
243: }
00000244 L_12:
00000244 B00B ADD R13,#0x2C
00000246 BCF0 POP {R4-R7}
00000248 BC08 POP {R3}
0000024A B003 ADD R13,#0xC
0000024C 4718 BX R3
0000024E ENDP ; 'lpc2000_debug_printf?T'
ARM COMPILER V2.42, lpc2000_dbg_printf 27/03/06 10:45:50 PAGE 12
Module Information Static
----------------------------------
code size = ------
data size = 4
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -