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

📄 user_code.lst

📁 一个小的操作系统包括应用程序很有参考价值
💻 LST
📖 第 1 页 / 共 5 页
字号:
 428               		.stabn 68,0,160,.LM33-OS_CREATE_TASK
 429               	.LM33:
 430 026a DE01      		movw r26,r28
 431 026c 1996      		adiw r26,9
 432 026e 8D91      		ld r24,X+
 433 0270 9C91      		ld r25,X
 434 0272 1197      		sbiw r26,1
 435 0274 FC01      		movw r30,r24
 436 0276 1082      		st Z,__zero_reg__
 437 0278 0197      		sbiw r24,1
 438 027a 8D93      		st X+,r24
 439 027c 9C93      		st X,r25
 161:mxavr.c       ****  *sp_temp--=0;//R23
 440               		.stabn 68,0,161,.LM34-OS_CREATE_TASK
 441               	.LM34:
 442 027e DE01      		movw r26,r28
 443 0280 1996      		adiw r26,9
 444 0282 8D91      		ld r24,X+
 445 0284 9C91      		ld r25,X
 446 0286 1197      		sbiw r26,1
 447 0288 FC01      		movw r30,r24
 448 028a 1082      		st Z,__zero_reg__
 449 028c 0197      		sbiw r24,1
 450 028e 8D93      		st X+,r24
 451 0290 9C93      		st X,r25
 162:mxavr.c       ****  *sp_temp--=0;//R24
 452               		.stabn 68,0,162,.LM35-OS_CREATE_TASK
 453               	.LM35:
 454 0292 DE01      		movw r26,r28
 455 0294 1996      		adiw r26,9
 456 0296 8D91      		ld r24,X+
 457 0298 9C91      		ld r25,X
 458 029a 1197      		sbiw r26,1
 459 029c FC01      		movw r30,r24
 460 029e 1082      		st Z,__zero_reg__
 461 02a0 0197      		sbiw r24,1
 462 02a2 8D93      		st X+,r24
 463 02a4 9C93      		st X,r25
 163:mxavr.c       ****  *sp_temp--=0;//R25
 464               		.stabn 68,0,163,.LM36-OS_CREATE_TASK
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccykaaaa.s 			page 12


 465               	.LM36:
 466 02a6 DE01      		movw r26,r28
 467 02a8 1996      		adiw r26,9
 468 02aa 8D91      		ld r24,X+
 469 02ac 9C91      		ld r25,X
 470 02ae 1197      		sbiw r26,1
 471 02b0 FC01      		movw r30,r24
 472 02b2 1082      		st Z,__zero_reg__
 473 02b4 0197      		sbiw r24,1
 474 02b6 8D93      		st X+,r24
 475 02b8 9C93      		st X,r25
 164:mxavr.c       ****  *sp_temp--=0;//R26
 476               		.stabn 68,0,164,.LM37-OS_CREATE_TASK
 477               	.LM37:
 478 02ba DE01      		movw r26,r28
 479 02bc 1996      		adiw r26,9
 480 02be 8D91      		ld r24,X+
 481 02c0 9C91      		ld r25,X
 482 02c2 1197      		sbiw r26,1
 483 02c4 FC01      		movw r30,r24
 484 02c6 1082      		st Z,__zero_reg__
 485 02c8 0197      		sbiw r24,1
 486 02ca 8D93      		st X+,r24
 487 02cc 9C93      		st X,r25
 165:mxavr.c       ****  *sp_temp--=0;//R27
 488               		.stabn 68,0,165,.LM38-OS_CREATE_TASK
 489               	.LM38:
 490 02ce DE01      		movw r26,r28
 491 02d0 1996      		adiw r26,9
 492 02d2 8D91      		ld r24,X+
 493 02d4 9C91      		ld r25,X
 494 02d6 1197      		sbiw r26,1
 495 02d8 FC01      		movw r30,r24
 496 02da 1082      		st Z,__zero_reg__
 497 02dc 0197      		sbiw r24,1
 498 02de 8D93      		st X+,r24
 499 02e0 9C93      		st X,r25
 166:mxavr.c       ****  *sp_temp--=0;//R28
 500               		.stabn 68,0,166,.LM39-OS_CREATE_TASK
 501               	.LM39:
 502 02e2 DE01      		movw r26,r28
 503 02e4 1996      		adiw r26,9
 504 02e6 8D91      		ld r24,X+
 505 02e8 9C91      		ld r25,X
 506 02ea 1197      		sbiw r26,1
 507 02ec FC01      		movw r30,r24
 508 02ee 1082      		st Z,__zero_reg__
 509 02f0 0197      		sbiw r24,1
 510 02f2 8D93      		st X+,r24
 511 02f4 9C93      		st X,r25
 167:mxavr.c       ****  *sp_temp--=0;//R29
 512               		.stabn 68,0,167,.LM40-OS_CREATE_TASK
 513               	.LM40:
 514 02f6 DE01      		movw r26,r28
 515 02f8 1996      		adiw r26,9
 516 02fa 8D91      		ld r24,X+
 517 02fc 9C91      		ld r25,X
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccykaaaa.s 			page 13


 518 02fe 1197      		sbiw r26,1
 519 0300 FC01      		movw r30,r24
 520 0302 1082      		st Z,__zero_reg__
 521 0304 0197      		sbiw r24,1
 522 0306 8D93      		st X+,r24
 523 0308 9C93      		st X,r25
 168:mxavr.c       ****  *sp_temp--=0;//R30
 524               		.stabn 68,0,168,.LM41-OS_CREATE_TASK
 525               	.LM41:
 526 030a DE01      		movw r26,r28
 527 030c 1996      		adiw r26,9
 528 030e 8D91      		ld r24,X+
 529 0310 9C91      		ld r25,X
 530 0312 1197      		sbiw r26,1
 531 0314 FC01      		movw r30,r24
 532 0316 1082      		st Z,__zero_reg__
 533 0318 0197      		sbiw r24,1
 534 031a 8D93      		st X+,r24
 535 031c 9C93      		st X,r25
 169:mxavr.c       ****  *sp_temp--=0;//R31
 536               		.stabn 68,0,169,.LM42-OS_CREATE_TASK
 537               	.LM42:
 538 031e DE01      		movw r26,r28
 539 0320 1996      		adiw r26,9
 540 0322 8D91      		ld r24,X+
 541 0324 9C91      		ld r25,X
 542 0326 1197      		sbiw r26,1
 543 0328 FC01      		movw r30,r24
 544 032a 1082      		st Z,__zero_reg__
 545 032c 0197      		sbiw r24,1
 546 032e 8D93      		st X+,r24
 547 0330 9C93      		st X,r25
 170:mxavr.c       ****  
 171:mxavr.c       ****  *sp_temp=0x80;//SREG每条线程的总中断开关都为开
 548               		.stabn 68,0,171,.LM43-OS_CREATE_TASK
 549               	.LM43:
 550 0332 E985      		ldd r30,Y+9
 551 0334 FA85      		ldd r31,Y+10
 552 0336 80E8      		ldi r24,lo8(-128)
 553 0338 8083      		st Z,r24
 172:mxavr.c       ****  
 173:mxavr.c       ****  OS_TASK_ARRY[OS_TASK_INT_USED].task_sp=(unsigned int)sp_temp-1;        //赋予线程堆栈指针
 554               		.stabn 68,0,173,.LM44-OS_CREATE_TASK
 555               	.LM44:
 556 033a 8091 0000 		lds r24,OS_TASK_INT_USED
 557 033e 9927      		clr r25
 558 0340 880F      		lsl r24
 559 0342 991F      		rol r25
 560 0344 880F      		lsl r24
 561 0346 991F      		rol r25
 562 0348 880F      		lsl r24
 563 034a 991F      		rol r25
 564 034c FC01      		movw r30,r24
 565 034e E050      		subi r30,lo8(-(OS_TASK_ARRY+4))
 566 0350 F040      		sbci r31,hi8(-(OS_TASK_ARRY+4))
 567 0352 8985      		ldd r24,Y+9
 568 0354 9A85      		ldd r25,Y+10
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccykaaaa.s 			page 14


 569 0356 0197      		sbiw r24,1
 570 0358 8083      		st Z,r24
 571 035a 9183      		std Z+1,r25
 174:mxavr.c       ****  OS_TASK_INT_USED=OS_TASK_INT_USED+1;  //修改已使用的线程数目
 572               		.stabn 68,0,174,.LM45-OS_CREATE_TASK
 573               	.LM45:
 574 035c 8091 0000 		lds r24,OS_TASK_INT_USED
 575 0360 8F5F      		subi r24,lo8(-(1))
 576 0362 8093 0000 		sts OS_TASK_INT_USED,r24
 175:mxavr.c       **** }
 577               		.stabn 68,0,175,.LM46-OS_CREATE_TASK
 578               	.LM46:
 579               	.LBE2:
 580               	/* epilogue: frame size=10 */
 581 0366 2A96      		adiw r28,10
 582 0368 0FB6      		in __tmp_reg__,__SREG__
 583 036a F894      		cli
 584 036c DEBF      		out __SP_H__,r29
 585 036e 0FBE      		out __SREG__,__tmp_reg__
 586 0370 CDBF      		out __SP_L__,r28
 587 0372 DF91      		pop r29
 588 0374 CF91      		pop r28
 589 0376 0895      		ret
 590               	/* epilogue end (size=9) */
 591               	/* function OS_CREATE_TASK size 444 (425) */
 592               		.size	OS_CREATE_TASK, .-OS_CREATE_TASK
 593               		.stabs	"temp_address:(0,4)",128,0,121,7
 594               		.stabs	"sp_temp:(5,3)=*(0,11)",128,0,122,9
 595               		.stabn	192,0,0,.LBB2-OS_CREATE_TASK
 596               		.stabn	224,0,0,.LBE2-OS_CREATE_TASK
 597               	.Lscope0:
 598               		.stabs	"",36,0,0,.Lscope0-OS_CREATE_TASK
 599               		.stabs	"OS_GETTO_NEXT_TASK_INT:F(0,20)",36,0,179,OS_GETTO_NEXT_TASK_INT
 600               	.global	OS_GETTO_NEXT_TASK_INT
 601               		.type	OS_GETTO_NEXT_TASK_INT, @function
 602               	OS_GETTO_NEXT_TASK_INT:
 176:mxavr.c       **** 
 177:mxavr.c       **** //下一条线程处理函数(中断模式)
 178:mxavr.c       **** void OS_GETTO_NEXT_TASK_INT(void)
 179:mxavr.c       **** {
 603               		.stabn 68,0,179,.LM47-OS_GETTO_NEXT_TASK_INT
 604               	.LM47:
 605               	/* prologue: frame size=2 */
 606 0378 CF93      		push r28
 607 037a DF93      		push r29
 608 037c CDB7      		in r28,__SP_L__
 609 037e DEB7      		in r29,__SP_H__
 610 0380 2297      		sbiw r28,2
 611 0382 0FB6      		in __tmp_reg__,__SREG__
 612 0384 F894      		cli
 613 0386 DEBF      		out __SP_H__,r29
 614 0388 0FBE      		out __SREG__,__tmp_reg__
 615 038a CDBF      		out __SP_L__,r28
 616               	/* prologue end (size=10) */
 180:mxavr.c       ****  void *p;                                       //声明入口指针
 181:mxavr.c       ****  SP_POINTER=OS_TASK_ARRY[os_next_task].task_sp; //转移SP指针到下一条线程
 617               		.stabn 68,0,181,.LM48-OS_GETTO_NEXT_TASK_INT
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccykaaaa.s 			page 15


 618               	.LM48:
 619               	.LBB3:
 620 038c 8091 0000 		lds r24,os_next_task
 621 0390 9927      		clr r25
 622 0392 880F      		lsl r24
 623 0394 991F      		rol r25
 624 0396 880F      		lsl r24
 625 0398 991F      		rol r25
 626 039a 880F      		lsl r24
 627 039c 991F      		rol r25
 628 039e FC01      		movw r30,r24
 629 03a0 E050      		subi r30,lo8(-(OS_TASK_ARRY+4))
 630 03a2 F040      		sbci r31,hi8(-(OS_TASK_ARRY+4))
 631 03a4 8081      		ld r24,Z
 632 03a6 9181      		ldd r25,Z+1
 633 03a8 9093 5E00 		sts (93)+1,r25
 634 03ac 8093 5D00 		sts 93,r24
 182:mxavr.c       ****  os_now_task=os_next_task;                       //修改当前线程标识
 635               		.stabn 68,0,182,.LM49-OS_GETTO_NEXT_TASK_INT
 636               	.LM49:
 637 03b0 8091 0000 		lds r24,os_next_task
 638 03b4 8093 0000 		sts os_now_task,r24
 183:mxavr.c       ****  p=&OS_GET_TO_TASK_INT;                              //获取汇编进入线程入口函数地址
 639               		.stabn 68,0,183,.LM50-OS_GETTO_NEXT_TASK_INT
 640               	.LM50:
 641 03b8 80E0      		ldi r24,lo8(pm(OS_GET_TO_TASK_INT))
 642 03ba 90E0      		ldi r25,hi8(pm(OS_GET_TO_TASK_INT))
 643 03bc 8983      		std Y+1,r24
 644 03be 9A83      		std Y+2,r25
 184:mxavr.c       ****  goto *p;                                       //进入汇编进入线程函数
 645               		.stabn 68,0,184,.LM51-OS_GETTO_NEXT_TASK_INT
 646               	.LM51:
 647 03c0 E981      		ldd r30,Y+1
 648 03c2 FA81      		ldd r31,Y+2
 649 03c4 0994      		ijmp
 185:mxavr.c       **** }
 650               		.stabn 68,0,185,.LM52-OS_GETTO_NEXT_TASK_INT
 651               	.LM52:
 652               	.LBE3:
 653               	/* epilogue: frame size=2 */
 654               	/* epilogue: noreturn */
 655               	/* epilogue end (size=0) */
 656               	/* function OS_GETTO_NEXT_TASK_INT size 39 (29) */
 657               		.size	OS_GETTO_NEXT_TASK_INT, .-OS_GETTO_NEXT_TASK_INT
 658               		.stabs	"p:(5,2)",128,0,180,1
 659               		.stabn	192,0,0,.LBB3-OS_GETTO_NEXT_TASK_INT
 660               		.stabn	224,0,0,.LBE3-OS_GETTO_NEXT_TASK_INT
 661               	.Lscope1:
 662               		.stabs	"",36,0,0,.Lscope1-OS_GETTO_NEXT_TASK_INT
 663               		.stabs	"OS_GETTO_NEXT_TASK_DISP:F(0,20)",36,0,189,OS_GETTO_NEXT_TASK_DISP
 664               	.global	OS_GETTO_NEXT_TASK_DISP
 665               		.type	OS_GETTO_NEXT_TASK_DISP, @function
 666               	OS_GETTO_NEXT_TASK_DISP:
 186:mxavr.c       **** 
 187:mxavr.c       **** //下一条线程处理函数(普通模式)
 188:mxavr.c       **** void OS_GETTO_NEXT_TASK_DISP(void)
 189:mxavr.c       **** {
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccykaaaa.s 			page 16


 667               		.stabn 68,0,189,.LM53-OS_GETTO_NEXT_TASK_DISP
 668               	.LM53:
 669               	/* prologue: frame size=2 */
 670 03c6 CF93      		push r28
 671 03c8 DF93      		push r29
 672 03ca CDB7      		in r28,__SP_L__
 673 03cc DEB7      		in r29,__SP_H__
 674 03ce 2297      		sbiw r28,2
 675 03d0 0FB6      		in __tmp_reg__,__SREG__
 676 03d2 F894      		cli
 677 03d4 DEBF      		out __SP_H__,r29
 678 03d6 0FBE      		out __SREG__,__tmp_reg__
 679 03d8 CDBF      		out __SP_L__,r28
 680               	/* prologue end (size=10) */
 190:mxavr.c       ****  void *p;                                       //声明入口指针
 191:mxavr.c       ****  SP_POINTER=OS_TASK_ARRY[os_next_task].task_sp; //转移SP指针到下一条线程
 681               		.stabn 68,0,191,.LM54-OS_GETTO_NEXT_TASK_DISP
 682               	.LM54:
 683               	.LBB4:
 684 03da 8091 0000 		lds r24,os_next_task
 685 03de 9927      		clr r25
 686 03e0 880F      		lsl r24
 687 03e2 991F      		rol r25
 688 03e4 880F      		lsl r24
 689 03e6 991F      		rol r25
 690 03e8 880F      		lsl r24
 691 03ea 991F      		rol r25

⌨️ 快捷键说明

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