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

📄 srec.lst

📁 au1200下的boot代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 206 0110 21180000 		move	$3,$0 207              	  97:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** }
 208              		.loc 1 97 0 209 0114 1800BF8F 		lw	$31,24($sp) 210 0118 1400B18F 		lw	$17,20($sp) 211 011c 1000B08F 		lw	$16,16($sp) 212 0120 21106000 		move	$2,$3 213 0124 0800E003 		j	$31 214 0128 2000BD27 		addiu	$sp,$sp,32 215              	 216              	$L13: 217              		.loc 1 92 0 218 012c 0000000C 		jal	charToInt 219 0130 00000482 		lb	$4,%lo(ch.0)($16) 220              	 221 0134 00000326 		addiu	$3,$16,%lo(ch.0) 222 0138 01006480 		lb	$4,1($3) 223 013c 0000000C 		jal	charToInt 224 0140 00810200 		sll	$16,$2,4 225              	 226 0144 25800202 		or	$16,$16,$2 227 0148 000030A2 		sb	$16,0($17) 228              		.loc 1 97 0 229 014c 1800BF8F 		lw	$31,24($sp) 230 0150 1400B18F 		lw	$17,20($sp) 231 0154 1000B08F 		lw	$16,16($sp) 232              		.loc 1 93 0 233 0158 01000324 		li	$3,1			# 0x1 234              		.loc 1 97 0 235 015c 21106000 		move	$2,$3 236 0160 0800E003 		j	$31 237 0164 2000BD27 		addiu	$sp,$sp,32 238              	 239              		.set	macro 240              		.set	reorder 241              	$LFE5:GAS LISTING /tmp/ccHaeCoR.s 			page 7 242              		.end	getSpair 243              		.align	2 244              		.globl	isSrec 245              		.ent	isSrec 246              		.type	isSrec, @function 247              	isSrec: 248              	$LFB6:  98:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 
  99:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** int isSrec()
 100:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** {
 249              		.loc 1 100 0 250              		.frame	$sp,32,$31		# vars= 8, regs= 1/0, args= 16, gp= 0 251              		.mask	0x80000000,-8 252              		.fmask	0x00000000,0 253              		.set	noreorder 254              		.set	nomacro 255              		 256 0168 E0FFBD27 		addiu	$sp,$sp,-32 257              	$LCFI13: 101:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 	DPRINTF("\n");
 102:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 	char ch[2];
 103:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 	if(srecRead(&ch, 2))
 258              		.loc 1 103 0 259 016c 1000A427 		addiu	$4,$sp,16 260              		.loc 1 100 0 261 0170 1800BFAF 		sw	$31,24($sp) 262              	$LCFI14: 263              		.loc 1 103 0 264 0174 0000000C 		jal	srecRead 265 0178 02000524 		li	$5,2			# 0x2 266              	 104:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 	{
 105:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 		if(ch[0] == 'S' && ch[1] == '0')
 106:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 		{			
 107:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 			eatLine();
 108:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 			return 1;
 109:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 		}
 110:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 	}
 111:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 	DPRINTF("FAILURE!\n");
 112:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 	return 0;
 113:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** }
 267              		.loc 1 113 0 268              		.loc 1 103 0 269 017c 06004010 		beq	$2,$0,$L18 270 0180 1800BF8F 		lw	$31,24($sp) 271              	 272              		.loc 1 105 0 273 0184 1000A383 		lb	$3,16($sp) 274 0188 53000224 		li	$2,83			# 0x53 275 018c 05006210 		beq	$3,$2,$L17 276 0190 1100A383 		lb	$3,17($sp) 277              	 278              		.loc 1 113 0 279 0194 1800BF8F 		lw	$31,24($sp) 280              	$L18: 281              		.loc 1 112 0 282 0198 21100000 		move	$2,$0GAS LISTING /tmp/ccHaeCoR.s 			page 8 283              		.loc 1 113 0 284 019c 0800E003 		j	$31 285 01a0 2000BD27 		addiu	$sp,$sp,32 286              	 287              	$L17: 288              		.loc 1 105 0 289 01a4 30000224 		li	$2,48			# 0x30 290              		.loc 1 113 0 291              		.loc 1 105 0 292 01a8 FBFF6214 		bne	$3,$2,$L18 293 01ac 1800BF8F 		lw	$31,24($sp) 294              	 295              		.loc 1 107 0 296 01b0 0000000C 		jal	eatLine 297 01b4 00000000 		nop 298              	 299              		.loc 1 113 0 300 01b8 1800BF8F 		lw	$31,24($sp) 301              		.loc 1 108 0 302 01bc 01000224 		li	$2,1			# 0x1 303              		.loc 1 113 0 304 01c0 0800E003 		j	$31 305 01c4 2000BD27 		addiu	$sp,$sp,32 306              	 307              		.set	macro 308              		.set	reorder 309              	$LFE6: 310              		.end	isSrec 311              		.section	.rodata.str1.4,"aMS",@progbits,1 312              		.align	2 313              	$LC0: 314 0000 0A       		.ascii	"\n" 315 0001 4572726F 		.ascii	"Error:  S-record checksum error!\n\000" 315      723A2020  315      532D7265  315      636F7264  315      20636865  316              		.text 317              		.align	2 318              		.globl	readSrec 319              		.ent	readSrec 320              		.type	readSrec, @function 321              	readSrec: 322              	$LFB7: 114:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 
 115:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** void* readSrec()
 116:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** {
 323              		.loc 1 116 0 324              		.frame	$sp,48,$31		# vars= 8, regs= 6/0, args= 16, gp= 0 325              		.mask	0x801f0000,-4 326              		.fmask	0x00000000,0 327              		.set	noreorder 328              		.set	nomacro 329              		 330 01c8 D0FFBD27 		addiu	$sp,$sp,-48 331              	$LCFI15: 332 01cc 2800B4AF 		sw	$20,40($sp)GAS LISTING /tmp/ccHaeCoR.s 			page 9 333              	$LCFI16: 334 01d0 2C00BFAF 		sw	$31,44($sp) 335              	$LCFI17: 336 01d4 2400B3AF 		sw	$19,36($sp) 337              	$LCFI18: 338 01d8 2000B2AF 		sw	$18,32($sp) 339              	$LCFI19: 340 01dc 1C00B1AF 		sw	$17,28($sp) 341              	$LCFI20: 342 01e0 1800B0AF 		sw	$16,24($sp) 343              	$LCFI21: 344 01e4 0000143C 		lui	$20,%hi($LC0) 345              	$L20: 117:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 	int i;
 118:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 	char type, length, checksum, ch;
 119:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 	char* address;
 120:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 
 121:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** //	printf("CH ADDR: %X\n", &ch);
 122:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 	while(1)	//read s-records until return from inside loop
 123:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 	{
 124:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 		if(!getStype(&type))
 346              		.loc 1 124 0 347 01e8 0000000C 		jal	getStype 348 01ec 1000A427 		addiu	$4,$sp,16 349              	 125:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 			return (void*) 0;
 126:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 
 127:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 		/* Get record length */
 128:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 		if(!getSpair(&length))
 129:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 			return (void*) 0;
 130:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 
 131:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 		checksum = length;
 132:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 
 133:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 		switch (type)
 134:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 		{
 135:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 			case 1:
 136:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 			case 2:
 137:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 			case 3:
 138:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					address = (char*)0;
 139:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					for (i = 0; i <= type; ++i)	//formulate address, number of bytes in address based on 'type'
 140:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					{
 141:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						if (!getSpair(&ch))	//get one byte of address
 142:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 							return (void*) 0;
 143:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 
 144:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						address = (char*)(((int)address << 8) | (ch & 0x00FF));
 145:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						/* maintain 8-bit checksum */
 146:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						checksum += ch;
 147:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						length--;
 148:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					}
 149:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 
 150:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					//printf("Dest addr: %X\n", address);
 151:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					for (i = 0; i < (length - 1); ++i)	//read remaining bytes (data) minus trailing checksum into  152:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					{						
 153:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						if (!getSpair(address))		//read byte into memory
 154:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 							return (void*) 0;
 155:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 		
 156:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						//maintain checksum by reading data written to memory back
GAS LISTING /tmp/ccHaeCoR.s 			page 10 157:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						checksum += *address;
 158:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						++address;
 159:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					}
 160:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 
 161:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					/* verify checksum */
 162:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					if (!getSpair(&ch))	//read checksum byte
 163:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						return (void*) 0;
 164:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 
 165:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					if (((ch - ~checksum) & 0x00FF) != 0)
 166:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					{
 167:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						printf("\nError:  S-record checksum error!\n");
 168:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						return (void*) 0;
 169:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					}
 170:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					break;
 171:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 			case 7:
 172:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 			case 8:
 173:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 			case 9:
 174:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					type = 10 - type;
 175:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					while (type-- >= 0)
 176:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					{
 177:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						if (!getSpair(&ch))
 178:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 							return (void*) 0;
 179:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						address = (char*)(((int)address << 8) | (ch & 0x00FF));
 180:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						checksum += ch;
 181:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						length--;
 182:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					}
 183:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					while (length-- > 1)
 184:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					{
 185:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						if (!getSpair(&ch))
 186:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 							return (void*) 0;
 187:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						checksum += ch;
 188:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					}
 189:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 
 190:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					if (!getSpair(&ch))
 191:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						return (void*) 0;
 192:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 
 193:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					if (((ch - ~checksum) & 0x00FF) != 0)
 194:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					{
 195:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						printf("\nError:  S-record checksum error!\n");
 196:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						return (void*) 0;
 350              		.loc 1 196 0 351              		.loc 1 124 0 352 01f0 49004010 		beq	$2,$0,$L19 353 01f4 21200000 		move	$4,$0 354              	 355              		.loc 1 128 0 356 01f8 0000000C 		jal	getSpair 357 01fc 1100A427 		addiu	$4,$sp,17 358              	 359              		.loc 1 133 0 360              		.loc 1 128 0 361 0200 44004010 		beq	$2,$0,$L68 362 0204 1000A593 		lbu	$5,16($sp) 363              	 364              		.loc 1 131 0 365 0208 1100A493 		lbu	$4,17($sp) 366              		.loc 1 133 0GAS LISTING /tmp/ccHaeCoR.s 			page 11 367 020c 001E0500 		sll	$3,$5,24 368              		.loc 1 131 0 369 0210 008E0400 		sll	$17,$4,24 370              		.loc 1 133 0 371 0214 031E0300 		sra	$3,$3,24 372              		.loc 1 131 0 373              		.loc 1 133 0 374 0218 07006018 		blez	$3,$L24 375 021c 038E1100 		sra	$17,$17,24 376              	 377 0220 04006228 		slt	$2,$3,4 378 0224 08004014 		bne	$2,$0,$L27 379 0228 F9FF6224 		addiu	$2,$3,-7 380              	 381 022c 0300422C 		sltu	$2,$2,3 382              		.loc 1 174 0 383              		.loc 1 133 0 384 0230 42004014 		bne	$2,$0,$L70 385 0234 0A000224 		li	$2,10			# 0xa 386              	 387              	$L24: 197:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					}
 198:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					else
 199:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 						return (void*)address;
 200:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 
 201:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					break;
 202:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 			case 0:
 203:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 			case 4:
 204:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 			case 5:
 205:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 			case 6:
 206:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 			default:
 207:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 					break;
 208:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 		}
 209:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 
 210:/mnt/hgfs/boot/booter/source/applications/booter/srec.c **** 		eatLine();
 388              		.loc 1 210 0 389 0238 0000000C 		jal	eatLine 390 023c 00000000 		nop 391              	 392 0240 7A000008 		j	$L20 393 0244 00000000 		nop 394              	 395              	$L27:

⌨️ 快捷键说明

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