⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 printf_p.lst

📁 LPC2294开发板资源,包括源代码,BOOTLOAER,SCH,PCB和器件清单
💻 LST
📖 第 1 页 / 共 4 页
字号:
 418 0328 0030A0E3 		orrne	r3, r1, #1
 419 032c 3F30CDE5 		andne	r6, r3, #255
 420 0330 FC0000EA 		.loc 1 279 0
 421              		tst	r6, #1
 276:printf_P.c    **** 		} else if (ch=='D'||ch=='d'||ch=='i') {
 422              	.L87
 423 0334 440054E3 		.loc 1 280 0
 424 0338 0020A013 		ldr	r2, [sp, #64]
 425 033c 0120A003 		add	r3, r2, #4
 426 0340 440054E3 		str	r3, [sp, #64]
 427 0344 64005413 		ldr	r8, [r2, #0]
 428 0348 0100000A 		b	.L89
 429 034c 690054E3 	.L87:
 430 0350 1A00001A 	.LBB3:
 431              		.loc 1 283 0
 277:printf_P.c    **** 			if(ch=='D')
 432              	sp, #64]
 433 0354 000052E3 		add	r3, r2, #4
 278:printf_P.c    **** 				flags |= LONGINT;
 434              	tr	r3, [sp, #64]
 435 0358 01308113 		ldr	r0, [r2, #0]
 436 035c FF600312 	.LVL51:
 279:printf_P.c    **** 			if (flags&LONGINT) {
 437              	L52:
 438 0360 010016E3 		.loc 1 284 0
 439 0364 0400000A 		tst	r6, #4
 280:printf_P.c    **** 			 	_ulong=va_arg(ap, long);
 440              	vne	r3, r0, asl #16
 441 0368 40209DE5 		movne	r8, r3, asr #16
 442 036c 043082E2 		moveq	r8, r0
 443 0370 40308DE5 	.LVL53:
 444 0374 008092E5 	.L89:
 445 0378 070000EA 	.LBE3:
 446              		.loc 1 287 0
 447              		cmp	r8, #0
 281:printf_P.c    **** 			} else {
 282:printf_P.c    **** 				register int _d;
 283:printf_P.c    **** 				_d=va_arg(ap, int);
 448              	2, #10
 449 037c 40209DE5 		strge	r2, [sp, #12]
 450 0380 043082E2 		.loc 1 288 0
 451 0384 40308DE5 		rsblt	r8, r8, #0
 452 0388 000092E5 		.loc 1 289 0
 453              		movlt	r3, #45
 454              		strltb	r3, [sp, #63]
 284:printf_P.c    **** 				_ulong = flags&SHORTINT ? (long)(short)_d : (long)_d;
 455              	r3, r3, #35
 456 038c 040016E3 		strlt	r3, [sp, #12]
 457 0390 0038A011 		b	.L94
 458 0394 4388A011 	.LVL54:
 459 0398 0080A001 	.L84:
 460              		.loc 1 306 0
 461              		cmp	r4, #79
 462              		movne	r2, #0
 285:printf_P.c    **** 			}
 286:printf_P.c    ****     			
 287:printf_P.c    **** 			if ((long)_ulong < 0) {
 463              	2, #1
 464 039c 000058E3 		cmp	r4, #79
 465 03a0 0A20A0A3 		cmpne	r4, #111
 466 03a4 0C208DA5 		bne	.L95
 288:printf_P.c    **** 				_ulong = -_ulong;
 467              	c 1 307 0
 468 03a8 008068B2 		cmp	r2, #0
 289:printf_P.c    **** 				sign = '-';
 469              	ddeq	r2, r2, #8
 470 03ac 2D30A0B3 		streq	r2, [sp, #12]
 471 03b0 3F30CDB5 	.LVL55:
 472 03b4 233043B2 		.loc 1 308 0
 473 03b8 0C308DB5 		orrne	r3, r6, #1
 474 03bc 630000EA 		andne	r6, r3, #255
 475              	.LVL56:
 476              		movne	r3, #8
 290:printf_P.c    **** 			}
 291:printf_P.c    **** 			base = DEC;
 292:printf_P.c    **** 			goto number;
 293:printf_P.c    **** 		} else
 294:printf_P.c    **** /*		
 295:printf_P.c    **** 		if (ch=='n') {
 296:printf_P.c    **** 			if (flags & LONGINT)
 297:printf_P.c    **** 				*va_arg(ap, long *) = ret;
 298:printf_P.c    **** 			else if (flags & SHORTINT)
 299:printf_P.c    **** 				*va_arg(ap, short *) = ret;
 300:printf_P.c    **** 			else
 301:printf_P.c    **** 				*va_arg(ap, int *) = ret;
 302:printf_P.c    **** 			continue;	// no output 
 303:printf_P.c    **** 		} else
 304:printf_P.c    **** */
 305:printf_P.c    **** #ifndef LIGHTPRINTF			
 306:printf_P.c    **** 		if (ch=='O'||ch=='o') {
 477              	3, [sp, #12]
 478 03c0 4F0054E3 		b	.L99
 479 03c4 0020A013 	.L95:
 480 03c8 0120A003 		.loc 1 311 0
 481 03cc 4F0054E3 		cmp	r4, #112
 482 03d0 6F005413 		bne	.L100
 483 03d4 0700001A 		.loc 1 320 0
 307:printf_P.c    **** 			if (ch=='O')
 484              	, [sp, #64]
 485 03d8 000052E3 		add	r2, r3, #4
 486 03dc 08208202 		str	r2, [sp, #64]
 487 03e0 0C208D05 		ldr	r8, [r3, #0]
 488              	.LVL57:
 308:printf_P.c    **** 				flags |= LONGINT;
 489              	 1 322 0
 490 03e4 01308613 		orr	r3, r6, #64
 491 03e8 FF600312 		and	r6, r3, #255
 492              	.LVL58:
 493 03ec 0830A013 		mov	r4, #120
 494 03f0 0C308D15 	.LVL59:
 495 03f4 530000EA 		mov	r2, #16
 496              		str	r2, [sp, #12]
 309:printf_P.c    **** 			base = OCT;
 310:printf_P.c    **** 			goto nosign;
 311:printf_P.c    **** 		} else if (ch=='p') {
 497              	.LVL60:
 498 03f8 700054E3 	.L100:
 499 03fc 0900001A 		.loc 1 325 0
 312:printf_P.c    **** 			/*
 313:printf_P.c    **** 			 * ``The argument shall be a pointer to void.  The
 314:printf_P.c    **** 			 * value of the pointer is converted to a sequence
 315:printf_P.c    **** 			 * of printable characters, in an implementation-
 316:printf_P.c    **** 			 * defined manner.''
 317:printf_P.c    **** 			 *	-- ANSI X3J11
 318:printf_P.c    **** 			 */
 319:printf_P.c    **** 			/* NOSTRICT */
 320:printf_P.c    **** 			_ulong = (unsigned int)va_arg(ap, void *);
 500              	p	r4, #115
 501 0400 40309DE5 		bne	.L102
 502 0404 042083E2 		.loc 1 326 0
 503 0408 40208DE5 		ldr	r2, [sp, #64]
 504 040c 008093E5 		add	r3, r2, #4
 505              		str	r3, [sp, #64]
 321:printf_P.c    **** 			base = HEX;
 322:printf_P.c    **** 			flags |= HEXPREFIX;
 506              	p, [r2, #0]
 507 0410 403086E3 		cmp	fp, #0
 508 0414 FF6003E2 		bne	.L104
 509              		.loc 1 328 0
 510 0418 7840A0E3 		mov	r3, #40
 511              		strb	r3, [sp, #23]
 512 041c 1020A0E3 		.loc 1 329 0
 513 0420 0C208DE5 		add	r3, r3, #70
 514 0424 470000EA 		strb	r3, [sp, #24]
 515              		.loc 1 330 0
 516              		add	r3, r3, #7
 323:printf_P.c    **** 			ch = 'x';
 324:printf_P.c    **** 			goto nosign;
 325:printf_P.c    **** 		} else if (ch=='s') {  // print a string from RAM
 517              	sp, #25]
 518 0428 730054E3 		.loc 1 331 0
 519 042c 2B00001A 		sub	r3, r3, #9
 326:printf_P.c    **** 			if ((cp = va_arg(ap, char *)) == NULL) {
 520              	rb	r3, [sp, #26]
 521 0430 40209DE5 		strb	r3, [sp, #27]
 522 0434 043082E2 		.loc 1 332 0
 523 0438 40308DE5 		sub	r3, r3, #67
 524 043c 00B092E5 		strb	r3, [sp, #28]
 525 0440 00005BE3 		.loc 1 333 0
 526 0444 0C00001A 		strb	fp, [sp, #29]
 327:printf_P.c    **** 				cp=buf;
 328:printf_P.c    **** 				cp[0] = '(';
 527              	, sp, #23
 528 0448 2830A0E3 	.L104:
 529 044c 1730CDE5 		.loc 1 335 0
 329:printf_P.c    **** 				cp[1] = 'n';
 530              	v	r3, ip, asl #24
 531 0450 463083E2 		movs	r4, r3, asr #24
 532 0454 1830CDE5 	.LVL61:
 330:printf_P.c    **** 				cp[2] = 'u';
 533              	i	.L106
 534 0458 073083E2 	.LBB4:
 535 045c 1930CDE5 		.loc 1 341 0
 331:printf_P.c    **** 				cp[4] = cp[3] = 'l';
 536              	v	r0, fp
 537 0460 093043E2 	.LVL62:
 538 0464 1A30CDE5 		mov	r1, #0
 539 0468 1B30CDE5 	.LVL63:
 332:printf_P.c    **** 				cp[5] = ')';
 540              		r2, r4
 541 046c 433043E2 		bl	memchr
 542 0470 1C30CDE5 	.LVL64:
 333:printf_P.c    **** 				cp[6] = '\0';
 543              	oc 1 343 0
 544 0474 1DB0CDE5 		cmp	r0, #0
 545 0478 17B08DE2 		beq	.L108
 546              		.loc 1 344 0
 334:printf_P.c    **** 			}
 335:printf_P.c    **** 			if (prec >= 0) {
 547              		r3, fp, r0
 548 047c 0C3CA0E1 		and	sl, r3, #255
 549 0480 434CB0E1 		.loc 1 345 0
 550              		mov	r3, sl, asl #24
 551 0484 0B00004A 		cmp	r4, r3, asr #24
 552              		blt	.L108
 336:printf_P.c    **** 				/*
 337:printf_P.c    **** 				 * can't use strlen; can only look for the
 338:printf_P.c    **** 				 * NUL in the first `prec' characters, and
 339:printf_P.c    **** 				 * strlen() will go further.
 340:printf_P.c    **** 				 */
 341:printf_P.c    **** 				char *p = (char*)memchr(cp, 0, prec);
 553              	10
 554 0488 0B00A0E1 	.LVL65:
 555              	.L106:
 556 048c 0010A0E3 	.LBE4:
 557              		.loc 1 350 0
 558 0490 0420A0E1 		mov	r0, fp
 559 0494 FEFFFFEB 	.LVL66:
 560              		bl	strlen
 342:printf_P.c    **** 
 343:printf_P.c    **** 				if (p != NULL) {
 561              		and	sl, r0, #255
 562 0498 000050E3 		b	.L110
 563 049c 0900000A 	.L108:
 344:printf_P.c    **** 					size = p - cp;
 564              	r	r3, [sp, #8]
 565 04a0 00306BE0 		and	sl, r3, #255
 566 04a4 FFA003E2 	.L110:
 345:printf_P.c    **** 					if (size > prec)
 567              	oc 1 351 0
 568 04a8 0A3CA0E1 		mov	r2, #0
 569 04ac 430C54E1 		strb	r2, [sp, #63]
 570 04b0 040000BA 		mov	r3, #0
 571 04b4 050000EA 	.LVL68:
 572              		b	.L111
 573              	.LVL69:
 574              	.L102:
 346:printf_P.c    **** 						size = prec;
 347:printf_P.c    **** 				} else
 348:printf_P.c    **** 					size = prec;
 349:printf_P.c    **** 			} else
 350:printf_P.c    **** 				size = strlen(cp);
 575              	354 0
 576 04b8 0B00A0E1 		cmp	r4, #85
 577              		movne	r2, #0
 578 04bc FEFFFFEB 		moveq	r2, #1
 579              		cmp	r4, #85
 580 04c0 FFA000E2 		cmpne	r4, #117
 581 04c4 010000EA 		bne	.L112
 582              		.loc 1 355 0
 583 04c8 08309DE5 		cmp	r2, #0
 584 04cc FFA003E2 		moveq	r3, #10
 585              		streq	r3, [sp, #12]
 351:printf_P.c    **** 			sign = '\0';
 586              	oc 1 356 0
 587 04d0 0020A0E3 		orrne	r3, r6, #1
 588 04d4 3F20CDE5 		andne	r6, r3, #255
 589 04d8 0030A0E3 	.LVL71:
 590              		movne	r2, #10
 591 04dc 530000EA 		strne	r2, [sp, #12]
 592              		b	.L99
 593              	.L112:
 352:printf_P.c    **** 		} else
 353:printf_P.c    **** #endif /* LIGHTPRINTF */			
 354:printf_P.c    **** 		if(ch=='U'||ch=='u') {
 594              	359 0
 595 04e0 550054E3 		cmp	r4, #120
 596 04e4 0020A013 		cmpne	r4, #88
 597 04e8 0120A003 		bne	.L116
 598 04ec 550054E3 	.LVL72:
 599 04f0 75005413 		.loc 1 362 0
 600 04f4 0700001A 		subs	r3, r8, #0
 355:printf_P.c    **** 			if (ch=='U')
 601              	r3, #1
 602 04f8 000052E3 	.LVL73:
 603 04fc 0A30A003 		ands	r3, r3, r6, lsr #3
 604 0500 0C308D05 		moveq	r3, #16
 605              		streq	r3, [sp, #12]
 356:printf_P.c    **** 				flags |= LONGINT;
 606              	 1 363 0
 607 0504 01308613 		orrne	r3, r6, #64
 608 0508 FF600312 		andne	r6, r3, #255
 609              	.LVL74:
 610 050c 0A20A013 		movne	r2, #16
 611 0510 0C208D15 		strne	r2, [sp, #12]
 612 0514 0B0000EA 	.LVL75:
 613              	.L99:
 357:printf_P.c    **** 			base = DEC;
 358:printf_P.c    **** 			goto nosign;
 359:printf_P.c    **** 		} else if (ch=='X'||ch=='x') {
 614              	366 0
 615 0518 780054E3 		mov	r3, #0
 616 051c 58005413 		strb	r3, [sp, #63]
 617 0520 3B00001A 	.LVL76:
 618              	.L94:
 360:printf_P.c    **** 			base = HEX;
 361:printf_P.c    **** 			/* leading 0x/X only if non-zero */
 362:printf_P.c    **** 			if (flags & ALT && _ulong != 0)
 619              	 1 372 0
 620 0524 003058E2 		mov	r3, ip, asl #24
 621 0528 0130A013 		movs	r3, r3, asr #24
 622              		bmi	.L120
 623 052c A63113E0 		.loc 1 373 0
 624 0530 1030A003 		and	r6, r6, #223
 625 0534 0C308D05 	.LVL77:
 363:printf_P.c    **** 				flags |= HEXPREFIX;
 626              	 381 0
 627 0538 40308613 		cmp	r3, #0
 628 053c FF600312 		cmpeq	r8, #0
 629              		addeq	fp, sp, #63
 630 0540 1020A013 		beq	.L123
 631 0544 0C208D15 	.LVL78:
 632              	.L120:
 633              	.LVL79:
 364:printf_P.c    **** 
 365:printf_P.c    **** 			/* unsigned conversions */
 366:printf_P.c    **** nosign:			sign = '\0';
 634              	 r8
 635 0548 0030A0E3 	.LVL80:
 636 054c 3F30CDE5 		add	fp, sp, #63
 637              	.LVL81:
 638              		ldr	r2, [sp, #12]
 367:printf_P.c    **** 			/*
 368:printf_P.c    **** 			 * ``... diouXx conversions ... if a precision is
 369:printf_P.c    **** 			 * specified, the 0 flag will be ignored.''
 370:printf_P.c    **** 			 *	-- ANSI X3J11
 371:printf_P.c    **** 			 */
 372:printf_P.c    **** number:	if ((dprec = prec) >= 0)
 639              	r2, [sp, #0]
 640 0550 0C3CA0E1 	.LVL82:
 641 0554 433CB0E1 	.L124:
 642 0558 0400004A 	.LBB5:
 373:printf_P.c    **** 				flags &= ~ZEROPAD;
 643              	c 1 385 0
 644 055c DF6006E2 		mov	r0, sl
 645              	.LVL83:
 374:printf_P.c    **** 
 375:printf_P.c    **** 			/*
 376:printf_P.c    **** 			 * ``The result of converting a zero value with an
 377:printf_P.c    **** 			 * explicit precision of zero is no characters.''
 378:printf_P.c    **** 			 *	-- ANSI X3J11
 379:printf_P.c    **** 			 */
 380:printf_P.c    **** 			cp = buf + BUF;
 381:printf_P.c    **** 			if (_ulong != 0 || prec != 0) {
 646              	r	r1, [sp, #12]
 647 0560 000053E3 	.LVL84:
 648 0564 00005803 		bl	__umodsi3
 649 0568 3FB08D02 	.LVL85:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -