📄 user_code.lst
字号:
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 + -