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

📄 user_code.lst

📁 一个小的操作系统包括应用程序很有参考价值
💻 LST
📖 第 1 页 / 共 5 页
字号:
 692 03ec FC01      		movw r30,r24
 693 03ee E050      		subi r30,lo8(-(OS_TASK_ARRY+4))
 694 03f0 F040      		sbci r31,hi8(-(OS_TASK_ARRY+4))
 695 03f2 8081      		ld r24,Z
 696 03f4 9181      		ldd r25,Z+1
 697 03f6 9093 5E00 		sts (93)+1,r25
 698 03fa 8093 5D00 		sts 93,r24
 192:mxavr.c       ****  os_now_task=os_next_task;                       //修改当前线程标识
 699               		.stabn 68,0,192,.LM55-OS_GETTO_NEXT_TASK_DISP
 700               	.LM55:
 701 03fe 8091 0000 		lds r24,os_next_task
 702 0402 8093 0000 		sts os_now_task,r24
 193:mxavr.c       ****  p=&OS_GET_TO_TASK_DISP;                              //获取汇编进入线程入口函数地址
 703               		.stabn 68,0,193,.LM56-OS_GETTO_NEXT_TASK_DISP
 704               	.LM56:
 705 0406 80E0      		ldi r24,lo8(pm(OS_GET_TO_TASK_DISP))
 706 0408 90E0      		ldi r25,hi8(pm(OS_GET_TO_TASK_DISP))
 707 040a 8983      		std Y+1,r24
 708 040c 9A83      		std Y+2,r25
 194:mxavr.c       ****  goto *p;                                       //进入汇编进入线程函数
 709               		.stabn 68,0,194,.LM57-OS_GETTO_NEXT_TASK_DISP
 710               	.LM57:
 711 040e E981      		ldd r30,Y+1
 712 0410 FA81      		ldd r31,Y+2
 713 0412 0994      		ijmp
 195:mxavr.c       **** }
 714               		.stabn 68,0,195,.LM58-OS_GETTO_NEXT_TASK_DISP
 715               	.LM58:
 716               	.LBE4:
 717               	/* epilogue: frame size=2 */
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccykaaaa.s 			page 17


 718               	/* epilogue: noreturn */
 719               	/* epilogue end (size=0) */
 720               	/* function OS_GETTO_NEXT_TASK_DISP size 39 (29) */
 721               		.size	OS_GETTO_NEXT_TASK_DISP, .-OS_GETTO_NEXT_TASK_DISP
 722               		.stabs	"p:(5,2)",128,0,190,1
 723               		.stabn	192,0,0,.LBB4-OS_GETTO_NEXT_TASK_DISP
 724               		.stabn	224,0,0,.LBE4-OS_GETTO_NEXT_TASK_DISP
 725               	.Lscope2:
 726               		.stabs	"",36,0,0,.Lscope2-OS_GETTO_NEXT_TASK_DISP
 727               		.stabs	"OS_SAVE_TASK_SP:F(0,20)",36,0,199,OS_SAVE_TASK_SP
 728               		.stabs	"task_sp:p(0,4)",160,0,198,1
 729               	.global	OS_SAVE_TASK_SP
 730               		.type	OS_SAVE_TASK_SP, @function
 731               	OS_SAVE_TASK_SP:
 196:mxavr.c       **** 
 197:mxavr.c       **** //保存线程SP指针
 198:mxavr.c       **** void OS_SAVE_TASK_SP(unsigned int task_sp)
 199:mxavr.c       **** {
 732               		.stabn 68,0,199,.LM59-OS_SAVE_TASK_SP
 733               	.LM59:
 734               	/* prologue: frame size=2 */
 735 0414 CF93      		push r28
 736 0416 DF93      		push r29
 737 0418 CDB7      		in r28,__SP_L__
 738 041a DEB7      		in r29,__SP_H__
 739 041c 2297      		sbiw r28,2
 740 041e 0FB6      		in __tmp_reg__,__SREG__
 741 0420 F894      		cli
 742 0422 DEBF      		out __SP_H__,r29
 743 0424 0FBE      		out __SREG__,__tmp_reg__
 744 0426 CDBF      		out __SP_L__,r28
 745               	/* prologue end (size=10) */
 746 0428 8983      		std Y+1,r24
 747 042a 9A83      		std Y+2,r25
 200:mxavr.c       ****  OS_TASK_ARRY[os_now_task].task_sp=task_sp;    //保存当前线程的SP指针
 748               		.stabn 68,0,200,.LM60-OS_SAVE_TASK_SP
 749               	.LM60:
 750 042c 8091 0000 		lds r24,os_now_task
 751 0430 9927      		clr r25
 752 0432 880F      		lsl r24
 753 0434 991F      		rol r25
 754 0436 880F      		lsl r24
 755 0438 991F      		rol r25
 756 043a 880F      		lsl r24
 757 043c 991F      		rol r25
 758 043e FC01      		movw r30,r24
 759 0440 E050      		subi r30,lo8(-(OS_TASK_ARRY+4))
 760 0442 F040      		sbci r31,hi8(-(OS_TASK_ARRY+4))
 761 0444 8981      		ldd r24,Y+1
 762 0446 9A81      		ldd r25,Y+2
 763 0448 8083      		st Z,r24
 764 044a 9183      		std Z+1,r25
 201:mxavr.c       **** }
 765               		.stabn 68,0,201,.LM61-OS_SAVE_TASK_SP
 766               	.LM61:
 767               	/* epilogue: frame size=2 */
 768 044c 2296      		adiw r28,2
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccykaaaa.s 			page 18


 769 044e 0FB6      		in __tmp_reg__,__SREG__
 770 0450 F894      		cli
 771 0452 DEBF      		out __SP_H__,r29
 772 0454 0FBE      		out __SREG__,__tmp_reg__
 773 0456 CDBF      		out __SP_L__,r28
 774 0458 DF91      		pop r29
 775 045a CF91      		pop r28
 776 045c 0895      		ret
 777               	/* epilogue end (size=9) */
 778               	/* function OS_SAVE_TASK_SP size 37 (18) */
 779               		.size	OS_SAVE_TASK_SP, .-OS_SAVE_TASK_SP
 780               	.Lscope3:
 781               		.stabs	"",36,0,0,.Lscope3-OS_SAVE_TASK_SP
 782               		.stabs	"OS_ATTEMPER:F(0,20)",36,0,205,OS_ATTEMPER
 783               	.global	OS_ATTEMPER
 784               		.type	OS_ATTEMPER, @function
 785               	OS_ATTEMPER:
 202:mxavr.c       **** 
 203:mxavr.c       **** //系统调度器
 204:mxavr.c       **** void OS_ATTEMPER(void)
 205:mxavr.c       **** {
 786               		.stabn 68,0,205,.LM62-OS_ATTEMPER
 787               	.LM62:
 788               	/* prologue: frame size=2 */
 789 045e CF93      		push r28
 790 0460 DF93      		push r29
 791 0462 CDB7      		in r28,__SP_L__
 792 0464 DEB7      		in r29,__SP_H__
 793 0466 2297      		sbiw r28,2
 794 0468 0FB6      		in __tmp_reg__,__SREG__
 795 046a F894      		cli
 796 046c DEBF      		out __SP_H__,r29
 797 046e 0FBE      		out __SREG__,__tmp_reg__
 798 0470 CDBF      		out __SP_L__,r28
 799               	/* prologue end (size=10) */
 206:mxavr.c       ****  unsigned char loop_task_arry;  //求出下一条线程的循环变量
 207:mxavr.c       ****  unsigned char task_high_pri=0xff;   //求出最高优先权临时变量
 800               		.stabn 68,0,207,.LM63-OS_ATTEMPER
 801               	.LM63:
 802               	.LBB5:
 803 0472 8FEF      		ldi r24,lo8(-1)
 804 0474 8A83      		std Y+2,r24
 208:mxavr.c       ****  //为经检验 原来值为0XFF
 209:mxavr.c       ****  os_next_task=TASK_NUMBER-1;     //预设下一条线程为最后ID线程
 805               		.stabn 68,0,209,.LM64-OS_ATTEMPER
 806               	.LM64:
 807 0476 83E0      		ldi r24,lo8(3)
 808 0478 8093 0000 		sts os_next_task,r24
 210:mxavr.c       ****  
 211:mxavr.c       ****  for (loop_task_arry=0;loop_task_arry<TASK_NUMBER;loop_task_arry++)
 809               		.stabn 68,0,211,.LM65-OS_ATTEMPER
 810               	.LM65:
 811 047c 1982      		std Y+1,__zero_reg__
 812               	.L8:
 813 047e 8981      		ldd r24,Y+1
 814 0480 8430      		cpi r24,lo8(4)
 815 0482 08F0      		brlo .L11
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccykaaaa.s 			page 19


 816 0484 3FC0      		rjmp .L7
 817               	.L11:
 212:mxavr.c       ****      {
 213:mxavr.c       **** 	   if( (OS_TASK_ARRY[loop_task_arry].task_ready==1)&&
 818               		.stabn 68,0,213,.LM66-OS_ATTEMPER
 819               	.LM66:
 820 0486 8981      		ldd r24,Y+1
 821 0488 9927      		clr r25
 822 048a 880F      		lsl r24
 823 048c 991F      		rol r25
 824 048e 880F      		lsl r24
 825 0490 991F      		rol r25
 826 0492 880F      		lsl r24
 827 0494 991F      		rol r25
 828 0496 FC01      		movw r30,r24
 829 0498 E050      		subi r30,lo8(-(OS_TASK_ARRY+3))
 830 049a F040      		sbci r31,hi8(-(OS_TASK_ARRY+3))
 831 049c 8081      		ld r24,Z
 832 049e 8130      		cpi r24,lo8(1)
 833 04a0 69F5      		brne .L10
 834 04a2 8981      		ldd r24,Y+1
 835 04a4 9927      		clr r25
 836 04a6 880F      		lsl r24
 837 04a8 991F      		rol r25
 838 04aa 880F      		lsl r24
 839 04ac 991F      		rol r25
 840 04ae 880F      		lsl r24
 841 04b0 991F      		rol r25
 842 04b2 FC01      		movw r30,r24
 843 04b4 E050      		subi r30,lo8(-(OS_TASK_ARRY+6))
 844 04b6 F040      		sbci r31,hi8(-(OS_TASK_ARRY+6))
 845 04b8 8081      		ld r24,Z
 846 04ba 8823      		tst r24
 847 04bc F9F4      		brne .L10
 214:mxavr.c       **** 	      (OS_TASK_ARRY[loop_task_arry].task_wait_clock==0))
 215:mxavr.c       **** 		   {
 216:mxavr.c       **** 		    if (OS_TASK_ARRY[loop_task_arry].task_pri<task_high_pri)
 848               		.stabn 68,0,216,.LM67-OS_ATTEMPER
 849               	.LM67:
 850 04be 8981      		ldd r24,Y+1
 851 04c0 9927      		clr r25
 852 04c2 880F      		lsl r24
 853 04c4 991F      		rol r25
 854 04c6 880F      		lsl r24
 855 04c8 991F      		rol r25
 856 04ca 880F      		lsl r24
 857 04cc 991F      		rol r25
 858 04ce FC01      		movw r30,r24
 859 04d0 E050      		subi r30,lo8(-(OS_TASK_ARRY+2))
 860 04d2 F040      		sbci r31,hi8(-(OS_TASK_ARRY+2))
 861 04d4 9081      		ld r25,Z
 862 04d6 8A81      		ldd r24,Y+2
 863 04d8 9817      		cp r25,r24
 864 04da 80F4      		brsh .L10
 217:mxavr.c       **** 			    {
 218:mxavr.c       **** 				 task_high_pri=OS_TASK_ARRY[loop_task_arry].task_pri;
 865               		.stabn 68,0,218,.LM68-OS_ATTEMPER
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccykaaaa.s 			page 20


 866               	.LM68:
 867 04dc 8981      		ldd r24,Y+1
 868 04de 9927      		clr r25
 869 04e0 880F      		lsl r24
 870 04e2 991F      		rol r25
 871 04e4 880F      		lsl r24
 872 04e6 991F      		rol r25
 873 04e8 880F      		lsl r24
 874 04ea 991F      		rol r25
 875 04ec FC01      		movw r30,r24
 876 04ee E050      		subi r30,lo8(-(OS_TASK_ARRY+2))
 877 04f0 F040      		sbci r31,hi8(-(OS_TASK_ARRY+2))
 878 04f2 8081      		ld r24,Z
 879 04f4 8A83      		std Y+2,r24
 219:mxavr.c       **** 				 os_next_task=loop_task_arry;
 880               		.stabn 68,0,219,.LM69-OS_ATTEMPER
 881               	.LM69:
 882 04f6 8981      		ldd r24,Y+1
 883 04f8 8093 0000 		sts os_next_task,r24
 884               		.stabn 68,0,211,.LM70-OS_ATTEMPER
 885               	.LM70:
 886               	.L10:
 887 04fc 8981      		ldd r24,Y+1
 888 04fe 8F5F      		subi r24,lo8(-(1))
 889 0500 8983      		std Y+1,r24
 890 0502 BDCF      		rjmp .L8
 220:mxavr.c       **** 				}
 221:mxavr.c       **** 		   }
 222:mxavr.c       ****      }
 223:mxavr.c       **** }
 891               		.stabn 68,0,223,.LM71-OS_ATTEMPER
 892               	.LM71:
 893               	.L7:
 894               	.LBE5:
 895               	/* epilogue: frame size=2 */
 896 0504 2296      		adiw r28,2
 897 0506 0FB6      		in __tmp_reg__,__SREG__
 898 0508 F894      		cli
 899 050a DEBF      		out __SP_H__,r29
 900 050c 0FBE      		out __SREG__,__tmp_reg__
 901 050e CDBF      		out __SP_L__,r28
 902 0510 DF91      		pop r29
 903 0512 CF91      		pop r28
 904 0514 0895      		ret
 905               	/* epilogue end (size=9) */
 906               	/* function OS_ATTEMPER size 92 (73) */
 907               		.size	OS_ATTEMPER, .-OS_ATTEMPER
 908               		.stabs	"loop_task_arry:(0,11)",128,0,206,1
 909               		.stabs	"task_high_pri:(0,11)",128,0,207,2
 910               		.stabn	192,0,0,.LBB5-OS_ATTEMPER
 911               		.stabn	224,0,0,.LBE5-OS_ATTEMPER
 912               	.Lscope4:
 913               		.stabs	"",36,0,0,.Lscope4-OS_ATTEMPER
 914               		.stabs	"OS_DLY_TIME_DEC:F(0,20)",36,0,227,OS_DLY_TIME_DEC
 915               	.global	OS_DLY_TIME_DEC
 916               		.type	OS_DLY_TIME_DEC, @function
 917               	OS_DLY_TIME_DEC:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccykaaaa.s 			page 21


 224:mxavr.c       **** 
 225:mxavr.c       **** //线程等待时钟节拍处理过程
 226:mxavr.c       **** void OS_DLY_TIME_DEC(void)
 227:mxavr.c       **** {
 918               		.stabn 68,0,227,.LM72-OS_DLY_TIME_DEC
 919               	.LM72:
 920               	/* prologue: frame size=1 */
 921 0516 CF93      		push r28
 922 0518 DF93      		push r29
 923 051a CDB7      		in r28,__SP_L__
 924 051c DEB7      		in r29,__SP_H__
 925 051e 2197      		sbiw r28,1
 926 0520 0FB6      		in __tmp_reg__,__SREG__
 927 0522 F894      		cli
 928 0524 DEBF      		out __SP_H__,r29
 929 0526 0FBE      		out __SREG__,__tmp_reg__
 930 0528 CDBF      		out __SP_L__,r28
 931               	/* prologue end (size=10) */
 228:mxavr.c       ****  unsigned char loop_i;
 229:mxavr.c       ****  for (loop_i=0;loop_i<TASK_NUMBER;loop_i++)
 932               		.stabn 68,0,229,.LM73-OS_DLY_TIME_DEC
 933               	.LM73:
 934               	.LBB6:
 935 052a 1982      		std Y+1,__zero_reg__
 936               	.L15:
 937 052c 8981      		ldd r24,Y+1
 938 052e 8430      		cpi r24,lo8(4)
 939 0530 08F0      		brlo .L18
 940 0532 2BC0      		rjmp .L14
 941               	.L18:
 230:mxavr.c       ****       {
 231:mxavr.c       **** 	   if (OS_TASK_ARRY[loop_i].task_wait_clock!=0)
 942               		.stabn 68,0,231,.LM74-OS_DLY_TIME_DEC
 943               	.LM74:
 944 0534 8981      		ldd r24,Y+1
 945 0536 9927      		clr r25
 946 0538 880F      		lsl r24

⌨️ 快捷键说明

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