📄 printf_p.lst
字号:
650 056c 2000000A and r0, r0, #255
651 .LVL86:
652 .loc 1 387 0
653 cmp r0, #9
654 0570 08A0A0E1 .loc 1 388 0
655 addls r3, r0, #48
656 0574 3FB08DE2 andls r7, r3, #255
657 .loc 1 387 0
658 0578 0C209DE5 bls .L127
659 057c 00208DE5 .loc 1 390 0
660 add r0, r0, #87
661 .LVL87:
662 and r7, r0, #255
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;
663 91 0
664 0580 0A00A0E1 cmp r4, #88
665 andeq r7, r0, #223
666 0584 0C109DE5 .LVL89:
667 .L127:
668 0588 FEFFFFEB .loc 1 393 0
669 strb r7, [fp, #-1]!
670 058c FF0000E2 .loc 1 394 0
671 mov r0, sl
386:printf_P.c ****
387:printf_P.c **** if (_d<10) {
672 ldr r1, [sp, #0]
673 0590 090050E3 bl __udivsi3
388:printf_P.c **** _d+='0';
674 ov r8, r0
675 0594 30308092 .loc 1 395 0
676 0598 FF700392 ldr r3, [sp, #0]
677 cmp sl, r3
678 059c 0300009A movcs sl, r0
389:printf_P.c **** } else {
390:printf_P.c **** _d+='a'-10;
679 .L124
680 05a0 570080E2 .LVL91:
681 .L129:
682 05a4 FF7000E2 .loc 1 398 0
683 ldr r2, [sp, #12]
391:printf_P.c **** if (ch=='X') _d&=~0x20;
684 r2, #8
685 05a8 580054E3 bne .L123
686 05ac DF700002 tst r6, #8
687 beq .L123
688 cmp r7, #48
392:printf_P.c **** }
393:printf_P.c **** *--cp=_d;
689 1 399 0
690 05b0 01706BE5 movne r3, #48
394:printf_P.c **** _ulong /= base;
691 VL92:
692 05b4 0A00A0E1 strneb r3, [fp, #-1]!
693 .LVL93:
694 05b8 00109DE5 .L123:
695 05bc FEFFFFEB .LBE5:
696 05c0 0080A0E1 .loc 1 403 0
395:printf_P.c **** } while (notlastdigit);
697 3, sp, #23
698 05c4 00309DE5 rsb r3, fp, r3
699 05c8 03005AE1 add r3, r3, #40
700 05cc 00A0A021 and sl, r3, #255
701 05d0 EAFFFF2A .LVL94:
702 mov r7, r4
703 .LVL95:
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')
704 , [sp, #8]
705 05d4 0C209DE5 and r3, r2, #255
706 05d8 080052E3 .LVL96:
707 05dc 0400001A b .L111
708 05e0 080016E3 .LVL97:
709 05e4 0200000A .L116:
710 05e8 300057E3 .loc 1 406 0
399:printf_P.c **** *--cp = '0';
711 , #0
712 05ec 3030A013 beq .L151
713 .loc 1 410 0
714 05f0 01306B15 strb r4, [sp, #23]
715 .loc 1 412 0
716 mov r3, #0
717 strb r3, [sp, #63]
400:printf_P.c **** #endif
401:printf_P.c **** }
402:printf_P.c ****
403:printf_P.c **** size = buf + BUF - cp;
718
719 05f4 17308DE2 mov r7, r4
720 05f8 03306BE0 b .L81
721 05fc 283083E2 .LVL99:
722 0600 FFA003E2 .L111:
723 .loc 1 434 0
724 0604 0470A0E1 and r2, sl, #255
725 rsb r3, r2, r3
726 0608 08209DE5 .LVL100:
727 060c FF3002E2 and r3, r3, #255
728 str r3, [sp, #16]
729 0610 060000EA .loc 1 435 0
730 tst r3, #128
731 beq .L135
404:printf_P.c **** } else { //default
405:printf_P.c **** /* "%?" prints ?, unless ? is NUL */
406:printf_P.c **** if (ch == '\0')
732 6:
733 0614 000054E3 mov r3, #0
734 0618 4600000A str r3, [sp, #16]
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;
735 35:
736 061c 1740CDE5 .loc 1 438 0
411:printf_P.c **** size = 1;
412:printf_P.c **** sign = '\0';
737 drb r3, [sp, #63] @ zero_extendqisi2
738 0620 0030A0E3 cmp r3, #0
739 0624 3F30CDE5 .loc 1 439 0
740 addne r3, sl, #1
741 0628 0470A0E1 andne r3, r3, #255
742 062c 3D0000EA .LVL102:
743 .loc 1 438 0
744 bne .L139
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;
745 440 0
746 0630 FF200AE2 tst r6, #64
747 0634 033062E0 andeq r3, sl, #255
748 .loc 1 441 0
749 0638 FF3003E2 addne r3, r2, #2
750 063c 10308DE5 .LVL103:
435:printf_P.c **** if (dpad < 0)
751 r3, r3, #255
752 0640 800013E3 .LVL104:
753 0644 0100000A .L139:
754 .loc 1 442 0
755 ldr r2, [sp, #16]
756 0648 0030A0E3 add r3, r3, r2
757 064c 10308DE5 .LVL105:
758 and r4, r3, #255
436:printf_P.c **** dpad = 0;
437:printf_P.c ****
438:printf_P.c **** if (sign)
759
760 0650 3F30DDE5 .LVL107:
761 0654 000053E3 .loc 1 445 0
439:printf_P.c **** fieldsz++;
762 nds r3, r6, #48
763 0658 01308A12 str r3, [sp, #4]
764 065c FF300312 .loc 1 446 0
765 rsbeq r0, r4, r9
766 .LVL108:
767 0660 0300001A moveq r0, r0, asl #24
440:printf_P.c **** else if (flags & HEXPREFIX)
768 r0, r0, asr #24
769 0664 400016E3 bleq PAD_SP
770 0668 FF300A02 .LVL109:
441:printf_P.c **** fieldsz += 2;
771 42:
772 066c 02308212 .loc 1 449 0
773 ldrb r3, [sp, #63] @ zero_extendqisi2
774 0670 FF300312 cmp r3, #0
775 beq .L144
776 .LVL110:
442:printf_P.c **** fieldsz += dpad;
777 1 450 0
778 0674 10209DE5 add r0, sp, #63
779 0678 023083E0 .LVL111:
780 mov r1, #1
781 067c FF4003E2 .LVL112:
782 bl PRINT
783 .LVL113:
443:printf_P.c ****
444:printf_P.c **** /* right-adjusting blank padding */
445:printf_P.c **** if ((flags & (LADJUST|ZEROPAD)) == 0)
784 6
785 0680 303016E2 .LVL114:
786 0684 04308DE5 .L144:
446:printf_P.c **** PAD_SP(width - fieldsz);
787 oc 1 451 0
788 0688 09006400 tst r6, #64
789 beq .L146
790 068c 000CA001 .loc 1 452 0
791 0690 400CA001 mov r3, #48
792 0694 FEFFFF0B .LVL115:
793 strb r3, [sp, #21]
794 .loc 1 453 0
447:printf_P.c ****
448:printf_P.c **** /* prefix */
449:printf_P.c **** if (sign) {
795 , [sp, #22]
796 0698 3F30DDE5 .loc 1 454 0
797 069c 000053E3 add r0, sp, #21
798 06a0 0300000A .LVL116:
799 mov r1, #2
450:printf_P.c **** PRINT(&sign, 1);
800 17:
801 06a4 3F008DE2 bl PRINT
802 .LVL118:
803 06a8 0110A0E3 .L146:
804 .loc 1 458 0
805 06ac FEFFFFEB ldr r2, [sp, #4]
806 cmp r2, #32
807 06b0 070000EA .loc 1 459 0
808 rsbeq r0, r4, r9
809 .LVL119:
451:printf_P.c **** } else if (flags & HEXPREFIX) {
810 r0, asl #24
811 06b4 400016E3 moveq r0, r0, asr #24
812 06b8 0500000A bleq PAD_0
452:printf_P.c **** ox[0] = '0';
813 L120:
814 06bc 3030A0E3 .L148:
815 .loc 1 462 0
816 06c0 1530CDE5 ldr r3, [sp, #16]
453:printf_P.c **** ox[1] = ch;
817 r0, r3, asl #24
818 06c4 1670CDE5 .LVL121:
454:printf_P.c **** PRINT(ox, 2);
819 ov r0, r0, asr #24
820 06c8 15008DE2 bl PAD_0
821 .LVL122:
822 06cc 0210A0E3 .loc 1 465 0
823 mov r1, sl, asl #24
824 06d0 FEFFFFEB mov r0, fp
825 mov r1, r1, asr #24
826 bl PRINT
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)
827 468 0
828 06d4 04209DE5 tst r6, #16
829 06d8 200052E3 beq .L169
459:printf_P.c **** PAD_0(width - fieldsz);
830 oc 1 469 0
831 06dc 09006400 rsb r0, r4, r9
832 mov r0, r0, asl #24
833 06e0 000CA001 mov r0, r0, asr #24
834 06e4 400CA001 bl PAD_SP
835 06e8 FEFFFF0B b .L169
836 .L35:
837 .LVL123:
460:printf_P.c ****
461:printf_P.c **** /* leading zeroes from decimal precision */
462:printf_P.c **** PAD_0(dpad);
838 loc 1 473 0
839 06ec 10309DE5 add fp, sp, #23
840 06f0 030CA0E1 mov r2, #1
841 mov sl, r2
842 06f4 400CA0E1 b .L136
843 06f8 FEFFFFEB .LVL124:
844 .L151:
463:printf_P.c ****
464:printf_P.c **** /* the string or number proper */
465:printf_P.c **** PRINT(cp, size);
845 , sp, #68
846 06fc 0A1CA0E1 ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
847 0700 0B00A0E1 add sp, sp, #16
848 0704 411CA0E1 bx lr
849 0708 FEFFFFEB .LFE6:
466:printf_P.c ****
467:printf_P.c **** /* left-adjusting padding (always blank) */
468:printf_P.c **** if (flags & LADJUST)
850 e _printf_P, .-_printf_P
851 070c 100016E3 .section .debug_frame,"",%progbits
852 0710 69FEFF0A .Lframe0:
469:printf_P.c **** PAD_SP(width - fieldsz);
853 byte .LECIE0-.LSCIE0
854 0714 090064E0 .LSCIE0:
855 0718 000CA0E1 .4byte 0xffffffff
856 071c 400CA0E1 .byte 0x1
857 0720 FEFFFFEB .ascii "\000"
858 0724 64FEFFEA .uleb128 0x1
859 .sleb128 -4
860 .byte 0xe
861 .byte 0xc
470:printf_P.c **** }
471:printf_P.c **** done:
472:printf_P.c **** va_end(ap);
473:printf_P.c **** }
862 0xd
863 0728 17B08DE2 .uleb128 0x0
864 072c 0120A0E3 .align 2
865 0730 02A0A0E1 .LECIE0:
866 0734 C3FFFFEA .LSFDE0:
867 .4byte .LEFDE0-.LASFDE0
868 .LASFDE0:
869 0738 44D08DE2 .4byte .Lframe0
870 073c F04FBDE8 .4byte .LFB5
871 0740 10D08DE2 .4byte .LFE5-.LFB5
872 0744 1EFF2FE1 .byte 0x4
873 .4byte .LCFI0-.LFB5
874 .byte 0xe
1006 .4byte 0x0
DEFINED SYMBOLS
*ABS*:00000000 printf_P.c
C:\DOKUME~1\root\LOKALE~1\Temp/ccg7aaaa.s:13 .text:00000000 PAD_0
C:\DOKUME~1\root\LOKALE~1\Temp/ccg7aaaa.s:20 .text:00000000 $a
C:\DOKUME~1\root\LOKALE~1\Temp/ccg7aaaa.s:42 .text:0000002c PAD_SP
C:\DOKUME~1\root\LOKALE~1\Temp/ccg7aaaa.s:70 .text:00000058 PRINTP
C:\DOKUME~1\root\LOKALE~1\Temp/ccg7aaaa.s:96 .text:0000007c PRINT
C:\DOKUME~1\root\LOKALE~1\Temp/ccg7aaaa.s:124 .text:000000a0 _printf_P
UNDEFINED SYMBOLS
uart_sendchar
uart0Putch
__umodsi3
__udivsi3
memchr
strlen
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -