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

📄 printf_p.lst

📁 LPC2294开发板资源,包括源代码,BOOTLOAER,SCH,PCB和器件清单
💻 LST
📖 第 1 页 / 共 4 页
字号:
 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 + -