📄 printf_p.lst
字号:
181 00e4 250054E3 subs r1, r5, r9
182 00e8 F9FFFF1A .LVL23:
183 .loc 1 175 0
173:printf_P.c **** /* void */;
174:printf_P.c **** if ((n = fmt - fmark) != 0) {
184 r9
185 00ec 091055E0 blne PRINTP
186 .LVL24:
175:printf_P.c **** PRINTP(fmark, n);
187 7:
188 00f0 0900A011 .loc 1 177 0
189 00f4 FEFFFF1B cmp r4, #0
190 beq .L142
191 .loc 1 185 0
176:printf_P.c **** }
177:printf_P.c **** if (ch == '\0')
192 r3, #0
193 00f8 000054E3 mov r2, #255
194 00fc 6D01000A str r3, [sp, #4]
178:printf_P.c **** goto done;
179:printf_P.c **** fmt++; /* skip over '%' */
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';
195 rb r3, [sp, #59]
196 0100 0030A0E3 str r2, [sp, #8]
197 0104 FF20A0E3 .loc 1 179 0
198 0108 04308DE5 add r9, r5, #1
199 010c 3B30CDE5 .loc 1 185 0
200 0110 08208DE5 mov r8, r3
201 .LVL25:
202 0114 019085E2 .L169:
203 .loc 1 187 0
204 0118 0380A0E1 ldrb r4, [r9], #1 @ zero_extendqisi2
205 .LVL26:
206 .L170:
186:printf_P.c ****
187:printf_P.c **** rflag: ch = (*fmt++);
207 0
208 011c 0140D9E4 cmp r4, #117
209 beq .L33
210 orr r3, r4, #32
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') {
211 r3, #120
212 0120 750054E3 bne .L35
213 0124 0200000A .LVL27:
214 0128 203084E3 .L33:
215 012c 780053E3 ldr r2, [sp, #52]
216 0130 0C00001A .LVL28:
217 .loc 1 194 0
218 tst r8, #1
219 0134 34209DE5 .loc 1 195 0
220 addne r3, r2, #4
193:printf_P.c **** #endif
194:printf_P.c **** if (flags&LONGINT) {
221 [r2, #0]
222 0138 010018E3 strne r3, [sp, #52]
195:printf_P.c **** _ulong=va_arg(ap, unsigned long);
223 loc 1 194 0
224 013c 04308212 bne .L35
225 0140 00B09215 .LBB2:
226 0144 34308D15 .loc 1 198 0
227 ldr r0, [r2, #0]
228 0148 0600001A .LVL29:
229 .loc 1 199 0
196:printf_P.c **** } else {
197:printf_P.c **** register unsigned int _d;
198:printf_P.c **** _d=va_arg(ap, unsigned int);
230 , #4
231 014c 000092E5 .loc 1 198 0
232 add r3, r2, #4
199:printf_P.c **** _ulong = flags&SHORTINT ? (unsigned long)(unsigned short)_d : (unsigned long)_d;
233 r r3, [sp, #52]
234 0150 040018E3 .loc 1 199 0
235 movne r3, r0, asl #16
236 0154 043082E2 moveq fp, r0
237 0158 34308DE5 movne fp, r3, lsr #16
238 .LVL30:
239 015c 0038A011 .L35:
240 0160 00B0A001 .LBE2:
241 0164 23B8A011 .loc 1 204 0
242 cmp r4, #32
243 bne .L40
244 .loc 1 210 0
200:printf_P.c **** }
201:printf_P.c **** }
202:printf_P.c ****
203:printf_P.c **** #ifndef LIGHTPRINTF
204:printf_P.c **** if(ch==' ') {
245 p, #59] @ zero_extendqisi2
246 0168 200054E3 cmp r3, #0
247 016c 0300001A bne .L169
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)
248 L31:
249 0170 3B30DDE5 b .L147
250 0174 000053E3 .LVL32:
251 0178 E7FFFF1A .L40:
252 .loc 1 213 0
253 017c 530000EA cmp r4, #35
254 beq .L146
255 .loc 1 216 0
211:printf_P.c **** sign = ' ';
212:printf_P.c **** goto rflag;
213:printf_P.c **** } else if (ch=='#') {
256 #42
257 0180 230054E3 movne r3, #0
258 0184 5300000A moveq r3, #1
214:printf_P.c **** flags |= ALT;
215:printf_P.c **** goto rflag;
216:printf_P.c **** } else if (ch=='*'||ch=='-') {
259 p r4, #45
260 0188 2A0054E3 movne r2, r3
261 018c 0030A013 orreq r2, r3, #1
262 0190 0130A003 .LVL33:
263 0194 2D0054E3 cmp r2, #0
264 0198 0320A011 beq .L45
265 019c 01208303 .loc 1 217 0
266 cmp r3, #0
267 01a0 000052E3 beq .L47
268 01a4 0F00000A .loc 1 224 0
217:printf_P.c **** if (ch=='*') {
269 sp, #52]
270 01a8 000053E3 ldrsb r2, [r3, #0]
271 01ac 0A00000A cmp r2, #0
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)
272 d r2, r3, #4
273 01b0 34309DE5 ldrb r3, [r3, #0] @ zero_extendqisi2
274 01b4 D020D3E1 str r2, [sp, #52]
275 01b8 000052E3 str r3, [sp, #4]
276 01bc 042083E2 bge .L169
277 01c0 0030D3E5 .loc 1 226 0
278 01c4 34208DE5 rsb r3, r3, #0
279 01c8 04308DE5 and r3, r3, #255
280 01cc D2FFFFAA str r3, [sp, #4]
225:printf_P.c **** goto rflag;
226:printf_P.c **** width = -width;
281 oc 1 228 0
282 01d0 003063E2 orr r3, r8, #16
283 01d4 FF3003E2 .loc 1 229 0
284 01d8 04308DE5 and r8, r3, #223
285 b .L169
227:printf_P.c **** }
228:printf_P.c **** flags |= LADJUST;
286
287 01dc 103088E3 .loc 1 231 0
229:printf_P.c **** flags &= ~ZEROPAD; /* '-' disables '0' */
288 cmp r4, #43
289 01e0 DF8003E2 beq .L147
290 01e4 CCFFFFEA .loc 1 234 0
291 cmp r4, #46
230:printf_P.c **** goto rflag;
231:printf_P.c **** } else if (ch=='+') {
292 .L52
293 01e8 2B0054E3 .loc 1 235 0
294 01ec 3700000A mov r0, r9
232:printf_P.c **** sign = '+';
233:printf_P.c **** goto rflag;
234:printf_P.c **** } else if (ch=='.') {
295 L34:
296 01f0 2E0054E3 ldrb r4, [r0], #1 @ zero_extendqisi2
297 01f4 1E00001A cmp r4, #42
235:printf_P.c **** if ((ch = (*fmt++)) == '*') {
298 vne r0, r9
299 01f8 0900A0E1 .LVL35:
300 bne .L56
301 01fc 0140D0E4 .LVL36:
302 0200 2A0054E3 .L54:
303 0204 0900A011 .loc 1 236 0
304 ldr r3, [sp, #52]
305 0208 0E00001A .loc 1 237 0
306 ldr r2, [r3, #0]
307 mvn r1, #0
236:printf_P.c **** n = va_arg(ap, int);
308 mp r2, r1
309 020c 34309DE5 movlt r2, r1
237:printf_P.c **** prec = n < 0 ? -1 : n;
310 nd r2, r2, #255
311 0210 002093E5 .loc 1 236 0
312 0214 0010E0E3 add r3, r3, #4
313 .loc 1 237 0
314 0218 010052E1 mov r9, r0
315 021c 0120A0B1 str r2, [sp, #8]
316 0220 FF2002E2 .loc 1 236 0
317 str r3, [sp, #52]
318 0224 043083E2 b .L169
319 .LVL38:
320 0228 0090A0E1 .L57:
321 022c 08208DE5 .loc 1 242 0
322 mov r3, #10
323 0230 34308DE5 mla r3, r2, r3, r4
324 0234 B8FFFFEA .loc 1 243 0
325 ldrb r4, [r0, #0] @ zero_extendqisi2
326 .loc 1 242 0
238:printf_P.c **** goto rflag;
239:printf_P.c **** }
240:printf_P.c **** n = 0;
241:printf_P.c **** while (is_digit(ch)) {
242:printf_P.c **** n = n*10 + to_digit(ch);
327 .L56:
328 0238 0A30A0E3 .loc 1 241 0
329 023c 924323E0 sub r3, r4, #48
243:printf_P.c **** ch = (*fmt++);
330 p r3, #9
331 0240 0040D0E5 .loc 1 243 0
332 add r0, r0, #1
333 0244 302043E2 .loc 1 241 0
334 bls .L57
335 .loc 1 245 0
336 0248 303044E2 mvn r3, #0
337 024c 090053E3 cmp r2, r3
338 movge r3, r2
339 0250 010080E2 and r3, r3, #255
340 .loc 1 241 0
341 0254 F7FFFF9A mov r9, r0
244:printf_P.c **** }
245:printf_P.c **** prec = n < 0 ? -1 : n;
342 0
343 0258 0030E0E3 str r3, [sp, #8]
344 025c 030052E1 b .L170
345 0260 0230A0A1 .LVL39:
346 0264 FF3003E2 .L52:
347 .loc 1 249 0
348 0268 0090A0E1 cmp r4, #48
349 bne .L59
350 026c 08308DE5 .loc 1 255 0
351 0270 AAFFFFEA tst r8, #16
352 .loc 1 256 0
353 orreq r8, r8, #32
246:printf_P.c **** goto reswitch;
247:printf_P.c **** } else
248:printf_P.c **** #endif /* LIGHTPRINTF */
249:printf_P.c **** if (ch=='0') {
354 9:
355 0274 300054E3 .loc 1 258 0
356 0278 0200001A sub r3, r4, #49
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))
357 p r3, #8
358 027c 100018E3 bhi .L62
256:printf_P.c **** flags |= ZEROPAD; /* '-' disables '0' */
359 ov r0, r2
360 0280 20808803 .LVL40:
361 0284 A4FFFFEA .L64:
362 .loc 1 261 0
257:printf_P.c **** goto rflag;
258:printf_P.c **** } else if (ch>='1' && ch<='9') {
363 r3, #10
364 0288 313044E2 mla r2, r0, r3, r4
365 028c 080053E3 .loc 1 262 0
366 0290 0A00008A ldrb r4, [r9], #1 @ zero_extendqisi2
367 0294 0200A0E1 .loc 1 263 0
368 sub r3, r4, #48
369 cmp r3, #9
259:printf_P.c **** n = 0;
260:printf_P.c **** do {
261:printf_P.c **** n = 10 * n + to_digit(ch);
370 261 0
371 0298 0A30A0E3 sub r0, r2, #48
372 029c 904322E0 .loc 1 263 0
262:printf_P.c **** ch = *fmt++;
373 s .L64
374 02a0 0140D9E4 .loc 1 264 0
263:printf_P.c **** } while (is_digit(ch));
375 nd r0, r0, #255
376 02a4 303044E2 .LVL41:
377 02a8 090053E3 str r0, [sp, #4]
378 b .L170
379 02ac 300042E2 .LVL42:
380 .L62:
381 02b0 F8FFFF9A .loc 1 266 0
264:printf_P.c **** width = n;
382 , #104
383 02b4 FF0000E2 .loc 1 267 0
384 orreq r8, r8, #4
385 02b8 04008DE5 .loc 1 266 0
386 02bc 97FFFFEA beq .L169
387 b .L66
388 .LVL43:
265:printf_P.c **** goto reswitch;
266:printf_P.c **** } else if (ch=='h') {
389 .loc 1 232 0
390 02c0 680054E3 strb r4, [sp, #59]
267:printf_P.c **** flags |= SHORTINT;
391 .L169
392 02c4 04808803 .LVL44:
393 .L146:
394 02c8 93FFFF0A .loc 1 214 0
395 02cc 030000EA orr r8, r8, #8
396 b .L169
397 .LVL45:
398 .L66:
399 02d0 3B40CDE5 .loc 1 269 0
400 02d4 90FFFFEA cmp r4, #108
401 .loc 1 270 0
402 orreq r8, r8, #1
403 beq .L169
404 02d8 088088E3 .L68:
405 02dc 8EFFFFEA .loc 1 271 0
406 ldr r3, [sp, #8]
407 .loc 1 272 0
268:printf_P.c **** goto rflag;
269:printf_P.c **** } else if (ch=='l') {
408 c 1 271 0
409 02e0 6C0054E3 and ip, r3, #255
270:printf_P.c **** flags |= LONGINT;
410 VL46:
411 02e4 01808803 .loc 1 272 0
412 02e8 8BFFFF0A bne .L70
413 .loc 1 273 0
271:printf_P.c **** goto rflag;
414 r3, [sp, #52]
415 02ec 08309DE5 ldr r2, [r3, #0]
272:printf_P.c **** } else if (ch=='c') {
416 dd r3, r3, #4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -