📄 printf_p.lst
字号:
178:printf_P.c **** goto done;
179:printf_P.c **** fmt++; /* skip over '%' */
178 L19:
179 0104 015086E2 mov r3, #255
180:printf_P.c ****
181:printf_P.c **** flags = 0;
182:printf_P.c **** dprec = 0;
183:printf_P.c **** width = 0;
184:printf_P.c **** prec = -1;
185:printf_P.c **** sign = '\0';
180 tr r3, [sp, #8]
181 0108 0020A0E3 mvn ip, #0
182 010c 3F20CDE5 .LVL20:
183 0110 0090A0E3 .L170:
184 0114 0960A0E1 .loc 1 187 0
185 ldrb r4, [r5], #1 @ zero_extendqisi2
186 0118 FF30A0E3 .LVL21:
187 011c 08308DE5 b .L38
188 0120 00C0E0E3 .LVL22:
189 .L155:
190 .loc 1 232 0
186:printf_P.c ****
187:printf_P.c **** rflag: ch = (*fmt++);
191 sp, #63]
192 0124 0140D5E4 b .L170
193 .L154:
194 0128 040000EA .loc 1 214 0
195 orr r6, r6, #8
196 b .L170
188:printf_P.c **** reswitch:
189:printf_P.c **** #ifdef LIGHTPRINTF
190:printf_P.c **** if (ch=='o' || ch=='u' || (ch|0x20)=='x') {
191:printf_P.c **** #else
192:printf_P.c **** if (ch=='u' || (ch|0x20)=='x') {
193:printf_P.c **** #endif
194:printf_P.c **** if (flags&LONGINT) {
195:printf_P.c **** _ulong=va_arg(ap, unsigned long);
196:printf_P.c **** } else {
197:printf_P.c **** register unsigned int _d;
198:printf_P.c **** _d=va_arg(ap, unsigned int);
199:printf_P.c **** _ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d;
200:printf_P.c **** }
201:printf_P.c **** }
202:printf_P.c ****
203:printf_P.c **** #ifndef LIGHTPRINTF
204:printf_P.c **** if(ch==' ') {
205:printf_P.c **** /*
206:printf_P.c **** * ``If the space and + flags both appear, the space
207:printf_P.c **** * flag will be ignored.''
208:printf_P.c **** * -- ANSI X3J11
209:printf_P.c **** */
210:printf_P.c **** if (!sign)
211:printf_P.c **** sign = ' ';
212:printf_P.c **** goto rflag;
213:printf_P.c **** } else if (ch=='#') {
214:printf_P.c **** flags |= ALT;
215:printf_P.c **** goto rflag;
216:printf_P.c **** } else if (ch=='*'||ch=='-') {
217:printf_P.c **** if (ch=='*') {
218:printf_P.c **** /*
219:printf_P.c **** * ``A negative field width argument is taken as a
220:printf_P.c **** * - flag followed by a positive field width.''
221:printf_P.c **** * -- ANSI X3J11
222:printf_P.c **** * They don't exclude field widths read from args.
223:printf_P.c **** */
224:printf_P.c **** if ((width = va_arg(ap, int)) >= 0)
225:printf_P.c **** goto rflag;
226:printf_P.c **** width = -width;
227:printf_P.c **** }
228:printf_P.c **** flags |= LADJUST;
229:printf_P.c **** flags &= ~ZEROPAD; /* '-' disables '0' */
230:printf_P.c **** goto rflag;
231:printf_P.c **** } else if (ch=='+') {
232:printf_P.c **** sign = '+';
197 :
198 012c 3F40CDE5 .L39:
199 0130 FBFFFFEA .loc 1 188 0
200 mov r5, r0
201 .LVL24:
202 0134 086086E3 .L38:
203 0138 F9FFFFEA .loc 1 192 0
204 cmp r4, #117
205 beq .L40
206 orr r3, r4, #32
207 013c 0050A0E1 cmp r3, #120
208 bne .L42
209 .LVL25:
210 .L40:
211 0140 750054E3 .loc 1 194 0
212 0144 0200000A tst r6, #1
213 0148 203084E3 beq .L43
214 014c 780053E3 .loc 1 195 0
215 0150 0E00001A ldr r2, [sp, #64]
216 .LVL26:
217 add r3, r2, #4
218 str r3, [sp, #64]
219 0154 010016E3 ldr r8, [r2, #0]
220 0158 0400000A b .L42
221 .LVL27:
222 015c 40209DE5 .L43:
223 .LBB2:
224 0160 043082E2 .loc 1 198 0
225 0164 40308DE5 ldr r2, [sp, #64]
226 0168 008092E5 .LVL28:
227 016c 070000EA add r3, r2, #4
228 str r3, [sp, #64]
229 ldr r0, [r2, #0]
230 .LVL29:
231 .LVL30:
232 0170 40209DE5 .loc 1 199 0
233 tst r6, #4
234 0174 043082E2 moveq r8, r0
235 0178 40308DE5 movne r3, r0, asl #16
236 017c 000092E5 movne r8, r3, lsr #16
237 .LVL31:
238 .L42:
239 .LBE2:
240 0180 040016E3 .loc 1 204 0
241 0184 0080A001 cmp r4, #32
242 0188 0038A011 bne .L47
243 018c 2388A011 .loc 1 210 0
244 ldrb r3, [sp, #63] @ zero_extendqisi2
245 cmp r3, #0
246 .loc 1 211 0
247 streqb r4, [sp, #63]
248 0190 200054E3 b .L170
249 0194 0300001A .LVL32:
250 .L47:
251 0198 3F30DDE5 .loc 1 213 0
252 019c 000053E3 cmp r4, #35
253 beq .L154
254 01a0 3F40CD05 .loc 1 216 0
255 01a4 DEFFFFEA cmp r4, #42
256 movne r3, #0
257 moveq r3, #1
258 cmp r4, #42
259 01a8 230054E3 cmpne r4, #45
260 01ac E0FFFF0A bne .L52
261 .loc 1 217 0
262 01b0 2A0054E3 cmp r3, #0
263 01b4 0030A013 beq .L54
264 01b8 0130A003 .loc 1 224 0
265 01bc 2A0054E3 ldr r2, [sp, #64]
266 01c0 2D005413 .LVL33:
267 01c4 0C00001A add r3, r2, #4
268 str r3, [sp, #64]
269 01c8 000053E3 ldrb r9, [r2, #0] @ zero_extendqisi2
270 01cc 0700000A tst r9, #128
271 beq .L170
272 01d0 40209DE5 .loc 1 226 0
273 rsb r3, r9, #0
274 01d4 043082E2 and r9, r3, #255
275 01d8 40308DE5 .LVL34:
276 01dc 0090D2E5 .L54:
277 01e0 800019E3 .loc 1 228 0
278 01e4 CEFFFF0A orr r3, r6, #16
279 .loc 1 229 0
280 01e8 003069E2 and r6, r3, #223
281 01ec FF9003E2 b .L170
282 .L52:
283 .loc 1 231 0
284 cmp r4, #43
285 01f0 103086E3 beq .L155
286 .loc 1 234 0
287 01f4 DF6003E2 cmp r4, #46
288 01f8 C9FFFFEA bne .L59
289 .loc 1 235 0
290 mov r0, r5
291 01fc 2B0054E3 .LVL35:
292 0200 C9FFFF0A ldrb r4, [r0], #1 @ zero_extendqisi2
233:printf_P.c **** goto rflag;
234:printf_P.c **** } else if (ch=='.') {
293 3
294 0204 2E0054E3 .L61:
295 0208 2200001A .loc 1 236 0
235:printf_P.c **** if ((ch = (*fmt++)) == '*') {
296 r r2, [sp, #64]
297 020c 0500A0E1 .LVL36:
298 add r3, r2, #4
299 0210 0140D0E4 str r3, [sp, #64]
300 0214 2A0054E3 .loc 1 237 0
301 0218 0400000A ldr r3, [r2, #0]
236:printf_P.c **** n = va_arg(ap, int);
237:printf_P.c **** prec = n < 0 ? -1 : n;
238:printf_P.c **** goto rflag;
239:printf_P.c **** }
240:printf_P.c **** n = 0;
241:printf_P.c **** while (is_digit(ch)) {
302 3, ip
303 021c 303044E2 movlt r3, ip
304 0220 090053E3 and r3, r3, #255
305 0224 0020A083 str r3, [sp, #8]
306 0228 1400008A mov r5, r0
307 022c 090000EA b .L170
308 .LVL37:
309 .L63:
310 0230 40209DE5 .loc 1 238 0
311 mov r0, r5
312 0234 043082E2 .LVL38:
313 0238 40308DE5 mov r2, #0
314 .L66:
315 023c 003092E5 .loc 1 242 0
316 0240 0C0053E1 add r3, r2, r2, asl #2
317 0244 0C30A0B1 add r3, r4, r3, asl #1
318 0248 FF3003E2 sub r2, r3, #48
319 024c 08308DE5 .loc 1 243 0
320 0250 0050A0E1 ldrb r4, [r0, #1]! @ zero_extendqisi2
321 0254 B2FFFFEA .loc 1 241 0
322 sub r3, r4, #48
323 cmp r3, #9
324 bls .L66
325 0258 0500A0E1 add r0, r0, #1
326 .LVL39:
327 025c 0020A0E3 .L65:
328 .loc 1 245 0
242:printf_P.c **** n = n*10 + to_digit(ch);
329 movlt r3, ip
330 0260 023182E0 and r3, r3, #255
331 0264 833084E0 str r3, [sp, #8]
332 0268 302043E2 b .L39
243:printf_P.c **** ch = (*fmt++);
333 40:
334 026c 0140F0E5 .L59:
335 .loc 1 249 0
336 0270 303044E2 cmp r4, #48
337 0274 090053E3 bne .L68
338 0278 F8FFFF9A .loc 1 255 0
339 027c 010080E2 tst r6, #16
340 .loc 1 256 0
341 orreq r6, r6, #32
244:printf_P.c **** }
245:printf_P.c **** prec = n < 0 ? -1 : n;
342 .L68:
343 0280 0C0052E1 .loc 1 258 0
344 0284 0230A0A1 sub r3, r4, #49
345 0288 0C30A0B1 cmp r3, #8
346 028c FF3003E2 bhi .L71
347 0290 08308DE5 mov r0, #0
348 0294 A8FFFFEA .LVL41:
349 .L73:
350 .loc 1 261 0
246:printf_P.c **** goto reswitch;
247:printf_P.c **** } else
248:printf_P.c **** #endif /* LIGHTPRINTF */
249:printf_P.c **** if (ch=='0') {
351 r0, r0, asl #2
352 0298 300054E3 add r3, r4, r3, asl #1
353 029c 0200001A sub r0, r3, #48
250:printf_P.c **** /*
251:printf_P.c **** * ``Note that 0 is taken as a flag, not as the
252:printf_P.c **** * beginning of a field width.''
253:printf_P.c **** * -- ANSI X3J11
254:printf_P.c **** */
255:printf_P.c **** if (!(flags & LADJUST))
354 oc 1 262 0
355 02a0 100016E3 ldrb r4, [r5], #1 @ zero_extendqisi2
256:printf_P.c **** flags |= ZEROPAD; /* '-' disables '0' */
356 loc 1 263 0
357 02a4 20608603 sub r3, r4, #48
358 02a8 9DFFFFEA cmp r3, #9
359 bls .L73
257:printf_P.c **** goto rflag;
258:printf_P.c **** } else if (ch>='1' && ch<='9') {
360 c 1 264 0
361 02ac 313044E2 and r9, r0, #255
362 02b0 080053E3 mov r0, r5
363 02b4 0A00008A .LVL42:
364 02b8 0000A0E3 b .L39
365 .LVL43:
366 .L71:
259:printf_P.c **** n = 0;
260:printf_P.c **** do {
261:printf_P.c **** n = 10 * n + to_digit(ch);
367 266 0
368 02bc 003180E0 cmp r4, #104
369 02c0 833084E0 .loc 1 267 0
370 02c4 300043E2 orreq r6, r6, #4
262:printf_P.c **** ch = *fmt++;
371 c 1 266 0
372 02c8 0140D5E4 beq .L170
263:printf_P.c **** } while (is_digit(ch));
373 VL44:
374 02cc 303044E2 .loc 1 269 0
375 02d0 090053E3 cmp r4, #108
376 02d4 F8FFFF9A .loc 1 270 0
264:printf_P.c **** width = n;
377 eq r6, r6, #1
378 02d8 FF9000E2 beq .L170
379 02dc 0500A0E1 .L77:
380 .LVL45:
381 02e0 95FFFFEA .loc 1 271 0
382 mov r7, r4
383 mov r1, r6
265:printf_P.c **** goto reswitch;
266:printf_P.c **** } else if (ch=='h') {
384
385 02e4 680054E3 ldr r2, [sp, #8]
267:printf_P.c **** flags |= SHORTINT;
386 LVL47:
387 02e8 04608603 and ip, r2, #255
388 .LVL48:
389 02ec 8CFFFF0A .LVL49:
390 .loc 1 272 0
268:printf_P.c **** goto rflag;
269:printf_P.c **** } else if (ch=='l') {
391 r4, #99
392 02f0 6C0054E3 bne .L79
270:printf_P.c **** flags |= LONGINT;
393 VL50:
394 02f4 01608603 .loc 1 273 0
395 02f8 89FFFF0A ldr r3, [sp, #64]
396 add r2, r3, #4
397 str r2, [sp, #64]
271:printf_P.c **** goto rflag;
398 r3, [r3, #0]
399 02fc 0470A0E1 strb r3, [sp, #23]
400 0300 0610A0E1 .loc 1 275 0
401 mov r3, #0
402 0304 08209DE5 strb r3, [sp, #63]
403 b .L81
404 0308 FFC002E2 .L79:
405 .loc 1 276 0
406 cmp r4, #68
272:printf_P.c **** } else if (ch=='c') {
407 , #0
408 030c 630054E3 moveq r2, #1
409 0310 0700001A cmp r4, #68
410 cmpne r4, #100
273:printf_P.c **** *(cp = buf) = va_arg(ap, int);
411 .L82
412 0314 40309DE5 cmp r4, #105
413 0318 042083E2 bne .L84
414 031c 40208DE5 .L82:
415 0320 003093E5 .loc 1 277 0
416 0324 1730CDE5 cmp r2, #0
274:printf_P.c **** size = 1;
275:printf_P.c **** sign = '\0';
417 1 278 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -