📄 printf_p.lst
字号:
380:printf_P.c **** cp = buf + BUF;
381:printf_P.c **** if (_ulong != 0 || prec != 0) {
646 5:
647 0500 000053E3 .LVL75:
648 0504 00005B03 .LBB5:
649 .loc 1 385 0
650 0508 DF8008E2 mov r1, r6
651 .LVL76:
652 050c 34608D02 mov r0, fp
653 .LVL77:
654 0510 1D00000A bl __umodsi3
655 .LVL78:
656 and r0, r0, #255
657 0514 0BA0A0E1 .LVL79:
658 .loc 1 388 0
659 0518 34708DE2 add r3, r0, #48
660 .loc 1 387 0
661 cmp r0, #9
662 .loc 1 388 0
663 and r5, r3, #255
664 .LVL80:
382:printf_P.c **** register unsigned char _d,notlastdigit;
383:printf_P.c **** do {
384:printf_P.c **** notlastdigit=(_ulong>=base);
385:printf_P.c **** _d = _ulong % base;
665 r0, r0, #87
666 051c 0610A0E1 .LVL81:
667 .loc 1 387 0
668 0520 0B00A0E1 bls .L118
669 .loc 1 391 0
670 0524 FEFFFFEB cmp r4, #88
671 .loc 1 390 0
672 0528 FF0000E2 and r5, r0, #255
673 .loc 1 391 0
386:printf_P.c ****
387:printf_P.c **** if (_d<10) {
388:printf_P.c **** _d+='0';
674 , r0, #223
675 052c 303080E2 .L118:
676 .loc 1 394 0
677 0530 090050E3 mov r0, fp
678 mov r1, r6
679 0534 FF5003E2 .loc 1 393 0
680 strb r5, [r7, #-1]!
389:printf_P.c **** } else {
390:printf_P.c **** _d+='a'-10;
681 394 0
682 0538 570080E2 bl __udivsi3
683 .loc 1 395 0
684 cmp sl, r6
685 053c 0200009A .loc 1 394 0
391:printf_P.c **** if (ch=='X') _d&=~0x20;
686 fp, r0
687 0540 580054E3 .loc 1 395 0
688 mov sl, r0
689 0544 FF5000E2 bcs .L115
690 .LVL82:
691 0548 DF500002 .loc 1 398 0
692 cmp r6, #8
392:printf_P.c **** }
393:printf_P.c **** *--cp=_d;
394:printf_P.c **** _ulong /= base;
693 395 0
694 054c 0B00A0E1 mov r6, r7
695 0550 0610A0E1 .LVL83:
696 .loc 1 398 0
697 0554 015067E5 bne .L114
698 tst r8, #8
699 0558 FEFFFFEB beq .L114
395:printf_P.c **** } while (notlastdigit);
700 , #48
701 055c 06005AE1 .loc 1 399 0
702 movne r3, #48
703 0560 00B0A0E1 strneb r3, [r6, #-1]!
704 .LVL84:
705 0564 00A0A0E1 .L114:
706 0568 EBFFFF2A .LBE5:
707 .loc 1 403 0
396:printf_P.c **** #ifndef LIGHTPRINTF
397:printf_P.c **** // handle octal leading 0
398:printf_P.c **** if (base==OCT && flags & ALT && *cp != '0')
708 sp, #60
709 056c 080056E3 rsb r3, r6, r2
710 sub r3, r3, #8
711 0570 0760A0E1 and r5, r3, #255
712 .LVL85:
713 ldr r3, [sp, #8]
714 0574 0400001A and r2, r3, #255
715 0578 080018E3 .LVL86:
716 057c 0200000A b .L102
717 0580 300055E3 .LVL87:
399:printf_P.c **** *--cp = '0';
718 oc 1 406 0
719 0584 3030A013 cmp r4, #0
720 0588 01306615 beq .L142
721 .loc 1 412 0
722 strb r3, [sp, #59]
723 .loc 1 410 0
400:printf_P.c **** #endif
401:printf_P.c **** }
402:printf_P.c ****
403:printf_P.c **** size = buf + BUF - cp;
724 r4, [sp, #12]
725 058c 3C208DE2 b .L72
726 0590 023066E0 .LVL88:
727 0594 083043E2 .L102:
728 0598 FF5003E2 .loc 1 434 0
729 and r1, r5, #255
730 059c 08309DE5 .LVL89:
731 05a0 FF2003E2 rsb r3, r1, r2
732 and r7, r3, #255
733 05a4 040000EA .loc 1 435 0
734 tst r7, #128
735 movne r7, #0
404:printf_P.c **** } else { //default
405:printf_P.c **** /* "%?" prints ?, unless ? is NUL */
406:printf_P.c **** if (ch == '\0')
736 1 438 0
737 05a8 000054E3 ldrb r3, [sp, #59] @ zero_extendqisi2
738 05ac 4100000A cmp r3, #0
407:printf_P.c **** goto done;
408:printf_P.c **** /* pretend it was %c with argument ch */
409:printf_P.c **** cp = buf;
410:printf_P.c **** *cp = ch;
411:printf_P.c **** size = 1;
412:printf_P.c **** sign = '\0';
739 oc 1 439 0
740 05b0 3B30CDE5 addne r3, r5, #1
741 .loc 1 438 0
742 05b4 0C40CDE5 bne .L166
743 05b8 390000EA .loc 1 440 0
744 tst r8, #64
745 andeq r3, r5, #255
413:printf_P.c **** }
414:printf_P.c ****
415:printf_P.c **** /*
416:printf_P.c **** * All reasonable formats wind up here. At this point,
417:printf_P.c **** * `cp' points to a string which (if not flags&LADJUST)
418:printf_P.c **** * should be padded out to `width' places. If
419:printf_P.c **** * flags&ZEROPAD, it should first be prefixed by any
420:printf_P.c **** * sign or other prefix; otherwise, it should be blank
421:printf_P.c **** * padded before the prefix is emitted. After any
422:printf_P.c **** * left-hand padding and prefixing, emit zeroes
423:printf_P.c **** * required by a decimal [diouxX] precision, then print
424:printf_P.c **** * the string proper, then emit zeroes required by any
425:printf_P.c **** * leftover floating precision; finally, if LADJUST,
426:printf_P.c **** * pad with blanks.
427:printf_P.c **** */
428:printf_P.c ****
429:printf_P.c **** /*
430:printf_P.c **** * compute actual size, so we know how much to pad.
431:printf_P.c **** */
432:printf_P.c **** fieldsz = size;
433:printf_P.c ****
434:printf_P.c **** dpad = dprec - size;
746
747 05bc FF1005E2 beq .L130
748 .loc 1 441 0
749 05c0 023061E0 add r3, r1, #2
750 05c4 FF7003E2 .LVL91:
435:printf_P.c **** if (dpad < 0)
751 6:
752 05c8 800017E3 and r3, r3, #255
753 05cc 0070A013 .LVL92:
754 .L130:
436:printf_P.c **** dpad = 0;
437:printf_P.c ****
438:printf_P.c **** if (sign)
755 c 1 442 0
756 05d0 3B30DDE5 add r3, r3, r7
757 05d4 000053E3 .LVL93:
439:printf_P.c **** fieldsz++;
758 oc 1 445 0
759 05d8 01308512 ands r2, r8, #48
760 .LVL94:
761 05dc 0300001A str r2, [sp, #0]
440:printf_P.c **** else if (flags & HEXPREFIX)
762 c 1 442 0
763 05e0 400018E3 and sl, r3, #255
764 05e4 FF300502 .LVL95:
765 .loc 1 445 0
766 05e8 0100000A .loc 1 446 0
441:printf_P.c **** fieldsz += 2;
767 q r3, [sp, #4]
768 05ec 023081E2 rsbeq r0, sl, r3
769 .LVL96:
770 moveq r0, r0, asl #24
771 05f0 FF3003E2 moveq r0, r0, asr #24
772 bleq PAD_SP
773 .LVL97:
442:printf_P.c **** fieldsz += dpad;
774 .loc 1 449 0
775 05f4 073083E0 ldrb r3, [sp, #59] @ zero_extendqisi2
776 cmp r3, #0
443:printf_P.c ****
444:printf_P.c **** /* right-adjusting blank padding */
445:printf_P.c **** if ((flags & (LADJUST|ZEROPAD)) == 0)
777 oc 1 450 0
778 05f8 302018E2 addne r0, sp, #59
779 .LVL98:
780 05fc 00208DE5 movne r1, #1
781 .loc 1 449 0
782 0600 FFA003E2 bne .L167
783 .LVL99:
784 .loc 1 451 0
446:printf_P.c **** PAD_SP(width - fieldsz);
785 #64
786 0604 04309D05 beq .L137
787 0608 03006A00 .loc 1 452 0
788 mov r3, #48
789 060c 000CA001 .LVL100:
790 0610 400CA001 strb r3, [sp, #57]
791 0614 FEFFFF0B .loc 1 453 0
792 strb r4, [sp, #58]
793 .loc 1 454 0
447:printf_P.c ****
448:printf_P.c **** /* prefix */
449:printf_P.c **** if (sign) {
794 sp, #57
795 0618 3B30DDE5 mov r1, #2
796 061c 000053E3 .LVL101:
450:printf_P.c **** PRINT(&sign, 1);
797 67:
798 0620 3B008D12 bl PRINT
799 .LVL102:
800 0624 0110A013 .L137:
801 .loc 1 458 0
802 0628 0600001A ldr r2, [sp, #0]
803 cmp r2, #32
451:printf_P.c **** } else if (flags & HEXPREFIX) {
804 459 0
805 062c 400018E3 ldreq r3, [sp, #4]
806 0630 0500000A rsbeq r0, sl, r3
452:printf_P.c **** ox[0] = '0';
807 veq r0, r0, asl #24
808 0634 3030A0E3 moveq r0, r0, asr #24
809 bleq PAD_0
810 0638 3930CDE5 .LVL103:
453:printf_P.c **** ox[1] = ch;
811 9:
812 063c 3A40CDE5 .loc 1 462 0
454:printf_P.c **** PRINT(ox, 2);
813 ov r0, r7, asl #24
814 0640 39008DE2 mov r0, r0, asr #24
815 0644 0210A0E3 bl PAD_0
816 .LVL104:
817 .loc 1 465 0
818 0648 FEFFFFEB mov r1, r5, asl #24
819 mov r0, r6
820 mov r1, r1, asr #24
455:printf_P.c **** }
456:printf_P.c ****
457:printf_P.c **** /* right-adjusting zero padding */
458:printf_P.c **** if ((flags & (LADJUST|ZEROPAD)) == ZEROPAD)
821 T
822 064c 00209DE5 .loc 1 468 0
823 0650 200052E3 tst r8, #16
459:printf_P.c **** PAD_0(width - fieldsz);
824 q .L168
825 0654 04309D05 .loc 1 469 0
826 0658 03006A00 ldr r2, [sp, #4]
827 065c 000CA001 rsb r0, sl, r2
828 0660 400CA001 mov r0, r0, asl #24
829 0664 FEFFFF0B mov r0, r0, asr #24
830 bl PAD_SP
831 b .L168
460:printf_P.c ****
461:printf_P.c **** /* leading zeroes from decimal precision */
462:printf_P.c **** PAD_0(dpad);
832 VL105:
833 0668 070CA0E1 .L72:
834 066c 400CA0E1 .loc 1 473 0
835 0670 FEFFFFEB mov r1, #1
836 .LVL106:
463:printf_P.c ****
464:printf_P.c **** /* the string or number proper */
465:printf_P.c **** PRINT(cp, size);
837 r7, #0
838 0674 051CA0E1 add r6, sp, #12
839 0678 0600A0E1 mov r5, r1
840 067c 411CA0E1 .LVL107:
841 0680 FEFFFFEB b .L126
466:printf_P.c ****
467:printf_P.c **** /* left-adjusting padding (always blank) */
468:printf_P.c **** if (flags & LADJUST)
842 08:
843 0684 100018E3 .L142:
844 0688 8FFEFF0A add sp, sp, #60
469:printf_P.c **** PAD_SP(width - fieldsz);
845 mfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
846 068c 04209DE5 add sp, sp, #16
847 0690 02006AE0 bx lr
848 0694 000CA0E1 .LFE6:
850 069c FEFFFFEB .section .debug_frame,"",%progbits
851 06a0 89FEFFEA .Lframe0:
852 .4byte .LECIE0-.LSCIE0
853 .LSCIE0:
854 .4byte 0xffffffff
470:printf_P.c **** }
471:printf_P.c **** done:
472:printf_P.c **** va_end(ap);
473:printf_P.c **** }
855
856 06a4 0110A0E3 .ascii "\000"
857 .uleb128 0x1
858 06a8 0070A0E3 .sleb128 -4
859 06ac 0C608DE2 .byte 0xe
860 06b0 0150A0E1 .byte 0xc
861 .uleb128 0xd
862 06b4 C5FFFFEA .uleb128 0x0
863 .align 2
864 .LECIE0:
865 06b8 3CD08DE2 .LSFDE0:
866 06bc F04FBDE8 .4byte .LEFDE0-.LASFDE0
867 06c0 10D08DE2 .LASFDE0:
868 06c4 1EFF2FE1 .4byte .Lframe0
869 .4byte .LFB5
870 .4byte .LFE5-.LFB5
1002 .4byte .LFE5-.Ltext0
DEFINED SYMBOLS
*ABS*:00000000 printf_P.c
C:\DOKUME~1\root\LOKALE~1\Temp/ccovaaaa.s:13 .text:00000000 PAD_0
C:\DOKUME~1\root\LOKALE~1\Temp/ccovaaaa.s:20 .text:00000000 $a
C:\DOKUME~1\root\LOKALE~1\Temp/ccovaaaa.s:47 .text:0000002c PAD_SP
C:\DOKUME~1\root\LOKALE~1\Temp/ccovaaaa.s:80 .text:00000058 PRINTP
C:\DOKUME~1\root\LOKALE~1\Temp/ccovaaaa.s:112 .text:00000084 PRINT
C:\DOKUME~1\root\LOKALE~1\Temp/ccovaaaa.s:146 .text:000000b0 _printf_P
UNDEFINED SYMBOLS
uart_sendchar
uart0Putch
__umodsi3
__udivsi3
memchr
strlen
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -