ucos_ii.s
来自「基于mega128的ucos参考源码」· S 代码 · 共 4,541 行 · 第 1/5 页
S
4,541 行
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R30,z+0
clr R31
ldi R24,<_OSUnMapTbl
ldi R25,>_OSUnMapTbl
add R30,R24
adc R31,R25
lpm R22,Z
.dbline 461
mov R2,R22
clr R3
mov R4,R20
clr R5
lsl R4
rol R5
lsl R4
rol R5
lsl R4
rol R5
add R4,R2
adc R5,R3
sts _OSPrioHighRdy,R4
.dbline 462
mov R2,R4
sts _OSPrioCur,R2
.dbline 463
ldi R24,2
mul R24,R2
movw R30,R0
ldi R24,<_OSTCBPrioTbl
ldi R25,>_OSTCBPrioTbl
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
sts _OSTCBHighRdy+1,R3
sts _OSTCBHighRdy,R2
.dbline 464
sts _OSTCBCur+1,R3
sts _OSTCBCur,R2
.dbline 465
xcall _OSStartHighRdy
.dbline 466
L33:
.dbline -2
L32:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r x 22 c
.dbsym r y 20 c
.dbend
.dbfunc e OSTimeTick _OSTimeTick fV
.dbstruct 0 8 os_event
.dbfield 0 OSEventType c
.dbfield 1 OSEventGrp c
.dbfield 2 OSEventCnt i
.dbfield 4 OSEventPtr pV
.dbfield 6 OSEventTbl A[2:2]c
.dbend
.dbstruct 0 34 os_tcb
.dbfield 0 OSTCBStkPtr pc
.dbfield 2 OSTCBNext pS[os_tcb]
.dbfield 4 OSTCBPrev pS[os_tcb]
.dbfield 6 OSTCBEventPtr pS[os_event]
.dbfield 8 OSTCBDly i
.dbfield 10 OSTCBStat c
.dbfield 11 OSTCBPrio c
.dbfield 12 OSTCBX c
.dbfield 13 OSTCBY c
.dbfield 14 OSTCBBitX c
.dbfield 15 OSTCBBitY c
.dbfield 16 OSTCBCtxSwCtr l
.dbfield 20 OSTCBCyclesTot l
.dbfield 24 OSTCBCyclesStart l
.dbfield 28 OSTCBStkBase pc
.dbfield 30 OSTCBStkUsed l
.dbend
; step -> R20
; cpu_sr -> R20
; ptcb -> R22,R23
.even
_OSTimeTick::
xcall push_gset2
.dbline -1
.dbline 524
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
.dbline 533
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
xcall _OSTimeTickHook
.dbline 540
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
lds R24,_OSRunning
cpi R24,1
breq X7
xjmp L36
X7:
.dbline 540
.dbline 562
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
ldi R20,1
.dbline 564
; Pピ
; Pピ
cpi R20,1
breq X8
xjmp L38
X8:
.dbline 564
.dbline 565
; Pピ
lds R22,_OSTCBList
lds R23,_OSTCBList+1
xjmp L41
L40:
.dbline 566
; Pピ
.dbline 567
; Pピ
xcall _OS_CPU_SR_Save
mov R20,R16
.dbline 568
; Pピ
movw R30,R22
ldd R2,z+8
ldd R3,z+9
tst R2
brne X5
tst R3
brne X9
xjmp L43
X9:
X5:
.dbline 568
.dbline 569
; Pピ
movw R24,R22
adiw R24,8
movw R30,R24
ldd R24,z+0
ldd R25,z+1
sbiw R24,1
movw R4,R24
std z+1,R5
std z+0,R4
cpi R24,0
cpc R24,R25
breq X10
xjmp L45
X10:
X6:
.dbline 569
.dbline 570
; Pピ
movw R30,R22
ldd R2,z+10
sbrc R2,3
rjmp L47
.dbline 570
.dbline 571
; Pピ
movw R30,R22
ldd R2,z+15
lds R3,_OSRdyGrp
or R3,R2
sts _OSRdyGrp,R3
.dbline 572
; Pピ
ldi R24,<_OSRdyTbl
ldi R25,>_OSRdyTbl
movw R30,R22
ldd R2,z+13
clr R3
add R2,R24
adc R3,R25
movw R30,R22
ldd R4,z+14
movw R30,R2
ldd R5,z+0
or R5,R4
std z+0,R5
.dbline 573
xjmp L48
L47:
.dbline 573
; Pピ
.dbline 574
; Pピ
ldi R24,1
ldi R25,0
movw R30,R22
std z+9,R25
std z+8,R24
.dbline 575
; Pピ
L48:
.dbline 576
; Pピ
L45:
.dbline 577
; Pピ
L43:
.dbline 578
movw R30,R22
ldd R22,z+2
ldd R23,z+3
.dbline 579
mov R16,R20
xcall _OS_CPU_SR_Restore
.dbline 580
L41:
.dbline 566
movw R30,R22
ldd R24,z+11
cpi R24,8
breq X11
xjmp L40
X11:
.dbline 581
; Pピ
; Pピ
; Pピ
; Pピ
L38:
.dbline 582
L36:
.dbline -2
L35:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r step 20 c
.dbsym r cpu_sr 20 c
.dbsym r ptcb 22 pS[os_tcb]
.dbend
.dbfunc e OSVersion _OSVersion fi
.even
_OSVersion::
.dbline -1
.dbline 600
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
.dbline 601
; Pピ
ldi R16,270
ldi R17,1
.dbline -2
L49:
.dbline 0 ; func end
ret
.dbend
.dbfunc e OS_EventTaskRdy _OS_EventTaskRdy fc
; bity -> R12
; bitx -> R22
; prio -> R20
; x -> R20
; ptcb -> R14,R15
; y -> R10
; msk -> y+10
; msg -> R18,R19
; pevent -> R16,R17
.even
_OS_EventTaskRdy::
xcall push_gset5
.dbline -1
.dbline 647
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
.dbline 656
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
ldi R24,<_OSUnMapTbl
ldi R25,>_OSUnMapTbl
movw R30,R16
ldd R30,z+1
clr R31
add R30,R24
adc R31,R25
lpm R10,Z
.dbline 657
; Pピ
ldi R24,<_OSMapTbl
ldi R25,>_OSMapTbl
mov R30,R10
clr R31
add R30,R24
adc R31,R25
lpm R12,Z
.dbline 658
; Pピ
movw R24,R16
adiw R24,6
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R30,z+0
clr R31
ldi R24,<_OSUnMapTbl
ldi R25,>_OSUnMapTbl
add R30,R24
adc R31,R25
lpm R20,Z
.dbline 659
; Pピ
ldi R24,<_OSMapTbl
ldi R25,>_OSMapTbl
mov R30,R20
clr R31
add R30,R24
adc R31,R25
lpm R22,Z
.dbline 660
; Pピ
mov R2,R20
clr R3
mov R20,R10
clr R21
lsl R20
rol R21
lsl R20
rol R21
lsl R20
rol R21
add R20,R2
adc R21,R3
.dbline 661
; Pピ
movw R24,R16
adiw R24,6
mov R2,R10
clr R3
add R2,R24
adc R3,R25
mov R4,R22
com R4
movw R30,R2
ldd R5,z+0
and R5,R4
std z+0,R5
.dbline 662
; Pピ
movw R24,R16
adiw R24,6
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
brne L51
.dbline 662
.dbline 663
; Pピ
movw R24,R16
adiw R24,1
mov R4,R12
com R4
movw R30,R24
ldd R5,z+0
and R5,R4
std z+0,R5
.dbline 664
; Pピ
L51:
.dbline 665
; Pピ
ldi R24,2
mul R24,R20
movw R30,R0
ldi R24,<_OSTCBPrioTbl
ldi R25,>_OSTCBPrioTbl
add R30,R24
adc R31,R25
ldd R14,z+0
ldd R15,z+1
.dbline 666
; Pピ
clr R2
clr R3
movw R30,R14
std z+9,R3
std z+8,R2
.dbline 667
; Pピ
movw R30,R14
std z+7,R3
std z+6,R2
.dbline 671
; Pピ
; Pピ
; Pピ
; Pピ
.dbline 673
; Pピ
; Pピ
movw R24,R14
adiw R24,10
ldd R4,y+10
com R4
movw R30,R24
ldd R5,z+0
and R5,R4
std z+0,R5
.dbline 674
; Pピ
movw R30,R14
ldd R2,z+10
tst R2
brne L53
.dbline 674
.dbline 675
; Pピ
lds R2,_OSRdyGrp
or R2,R12
sts _OSRdyGrp,R2
.dbline 676
; Pピ
ldi R24,<_OSRdyTbl
ldi R25,>_OSRdyTbl
mov R2,R10
clr R3
add R2,R24
adc R3,R25
movw R30,R2
ldd R4,z+0
or R4,R22
std z+0,R4
.dbline 677
; Pピ
L53:
.dbline 678
; Pピ
mov R16,R20
.dbline -2
L50:
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r bity 12 c
.dbsym r bitx 22 c
.dbsym r prio 20 c
.dbsym r x 20 c
.dbsym r ptcb 14 pS[os_tcb]
.dbsym r y 10 c
.dbsym l msk 10 c
.dbsym r msg 18 pV
.dbsym r pevent 16 pS[os_event]
.dbend
.dbfunc e OS_EventTaskWait _OS_EventTaskWait fV
; y -> R20
; pevent -> R16,R17
.even
_OS_EventTaskWait::
xcall push_gset1
.dbline -1
.dbline 698
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
.dbline 702
; Pピ
; Pピ
; Pピ
; Pピ
lds R30,_OSTCBCur
lds R31,_OSTCBCur+1
std z+7,R17
std z+6,R16
.dbline 703
; Pピ
ldd R20,z+13
.dbline 704
; Pピ
ldi R24,<_OSRdyTbl
ldi R25,>_OSRdyTbl
mov R2,R20
clr R3
add R2,R24
adc R3,R25
lds R30,_OSTCBCur
lds R31,_OSTCBCur+1
ldd R4,z+14
com R4
movw R30,R2
ldd R5,z+0
and R5,R4
std z+0,R5
.dbline 705
; Pピ
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
brne L56
.dbline 705
.dbline 706
; Pピ
lds R30,_OSTCBCur
lds R31,_OSTCBCur+1
ldd R2,z+15
com R2
lds R3,_OSRdyGrp
and R3,R2
sts _OSRdyGrp,R3
.dbline 707
; Pピ
L56:
.dbline 708
; Pピ
movw R24,R16
adiw R24,6
lds R30,_OSTCBCur
lds R31,_OSTCBCur+1
ldd R2,z+13
clr R3
add R2,R24
adc R3,R25
lds R30,_OSTCBCur
lds R31,_OSTCBCur+1
ldd R4,z+14
movw R30,R2
ldd R5,z+0
or R5,R4
std z+0,R5
.dbline 709
; Pピ
movw R24,R16
adiw R24,1
lds R30,_OSTCBCur
lds R31,_OSTCBCur+1
ldd R4,z+15
movw R30,R24
ldd R5,z+0
or R5,R4
std z+0,R5
.dbline -2
L55:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r y 20 c
.dbsym r pevent 16 pS[os_event]
.dbend
.dbfunc e OS_EventTO _OS_EventTO fV
; y -> R20
; pevent -> R16,R17
.even
_OS_EventTO::
xcall push_gset1
.dbline -1
.dbline 729
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
.dbline 733
; Pピ
; Pピ
; Pピ
; Pピ
lds R30,_OSTCBCur
lds R31,_OSTCBCur+1
ldd R20,z+13
.dbline 734
; Pピ
movw R24,R16
adiw R24,6
mov R2,R20
clr R3
add R2,R24
adc R3,R25
lds R30,_OSTCBCur
lds R31,_OSTCBCur+1
ldd R4,z+14
com R4
movw R30,R2
ldd R5,z+0
and R5,R4
std z+0,R5
.dbline 735
; Pピ
movw R24,R16
adiw R24,6
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
brne L59
.dbline 735
.dbline 736
; Pピ
movw R24,R16
adiw R24,1
lds R30,_OSTCBCur
lds R31,_OSTCBCur+1
ldd R4,z+15
com R4
movw R30,R24
ldd R5,z+0
and R5,R4
std z+0,R5
.dbline 737
; Pピ
L59:
.dbline 738
; Pピ
clr R2
lds R30,_OSTCBCur
lds R31,_OSTCBCur+1
std z+10,R2
.dbline 739
; Pピ
clr R3
lds R30,_OSTCBCur
lds R31,_OSTCBCur+1
std z+7,R3
std z+6,R2
.dbline -2
L58:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r y 20 c
.dbsym r pevent 16 pS[os_event]
.dbend
.dbfunc e OS_EventWaitListInit _OS_EventWaitListInit fV
; ptbl -> R20,R21
; pevent -> R16,R17
.even
_OS_EventWaitListInit::
xcall push_gset1
.dbline -1
.dbline 758
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
; Pピ
.dbline 762
; Pピ
; Pピ
; Pピ
; Pピ
clr R2
movw R30,R16
std z+1,R2
.dbline 763
; Pピ
movw R20,R16
subi R20,250 ; offset = 6
sbci R21,255
.dbline 766
; Pピ
; Pピ
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?