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

📄 os_core.asm

📁 此代码是ucos-II在凌阳61单片机上的移植
💻 ASM
📖 第 1 页 / 共 5 页
字号:
.debug
	.dw '.stabn 0x44,0,436,',0,0
	.dd LM100-_OSSched
	.dw 0x0d,0x0a
.code
LM100:
	R1=_OSUnMapTbl	// QImode move
	R2=[_OSRdyGrp]	// QImode move
	R1 = R1 + R2	//addqi3
	R3=R1	// QImode move
	R2=[R3]	// QImode move
	[BP]=R2	// QImode move
.debug
	.dw '.stabn 0x44,0,437,',0,0
	.dd LM101-_OSSched
	.dw 0x0d,0x0a
.code
LM101:
	R2=[BP]	// QImode move
	R1=R2 lsl 3
	R3=[BP]	// QImode move
	R2=R3	// QImode move
	R2=R2+_OSRdyTbl
	R3=_OSUnMapTbl	// QImode move
	R4=R2	// QImode move
	R4=[R4]	// QImode move
	[bp+2]=R4	// QImode move
	R2=R3	// QImode move
	R2 = R2 + [bp+2]	//addqi3
	R4=R2	// QImode move
	R3=[R4]	// QImode move
	[_OSPrioHighRdy]=R1+R3  //addqi3_Qrr
.debug
	.dw '.stabn 0x44,0,438,',0,0
	.dd LM102-_OSSched
	.dw 0x0d,0x0a
.code
LM102:
	R1=[_OSPrioHighRdy]	// QImode move
	CMP R1,[_OSPrioCur]	// QImode compare
	NSJZ L47	//QImode EQ
.debug
	.dw '.stabn 0x44,0,439,',0,0
	.dd LM103-_OSSched
	.dw 0x0d,0x0a
.code
LM103:
	R1=_OSTCBPrioTbl	// QImode move
	R2=[_OSPrioHighRdy]	// QImode move
	R1 = R1 + R2	//addqi3
	R3=R1	// QImode move
	R2=[R3]	// QImode move
	[_OSTCBHighRdy]=R2	// QImode move
.debug
	.dw '.stabn 0x44,0,440,',0,0
	.dd LM104-_OSSched
	.dw 0x0d,0x0a
.code
LM104:
	//split R1, [_OSCtxSwCtr]
	R1=[_OSCtxSwCtr]	// QImode move
	R2=[_OSCtxSwCtr+1]	// QImode move
	R3=R1+1	// HImode RD=RS+#IMM16
	R4=R2+0, Carry
	//split [_OSCtxSwCtr], R3
	[_OSCtxSwCtr]=R3	// QImode move
	[_OSCtxSwCtr+1]=R4	// QImode move
.debug
	.dw '.stabn 0x44,0,441,',0,0
	.dd LM105-_OSSched
	.dw 0x0d,0x0a
.code
LM105:
	call _OSCtxSw	// call without return value
L48:
L47:
.debug
	.dw '.stabn 0x44,0,444,',0,0
	.dd LM106-_OSSched
	.dw 0x0d,0x0a
.code
LM106:
// GCC inline ASM start
	INT IRQ 
	INT FIQ 
	
// GCC inline ASM end
.debug
	.dw '.stabn 0x44,0,445,',0,0
	.dd LM107-_OSSched
	.dw 0x0d,0x0a
.code
LM107:
LBE5:
.debug
	.dw '.stabn 0x44,0,445,',0,0
	.dd LM108-_OSSched
	.dw 0x0d,0x0a
.code
LM108:
L46:

	sp+=3
	pop bp from [sp]
	retf
	.endp	// end of OSSched

.debug
	.dw '.stabn 0xc0,0,0,',0,0
	.dd LBB5-_OSSched
	.dw 0x0d,0x0a
.code
.debug
	.dw '.stabs "y:21",128,0,0,0',0x0d,0x0a
.CODE
.debug
	.dw '.stabn 0xe0,0,0,',0,0
	.dd LBE5-_OSSched
	.dw 0x0d,0x0a
.code
.debug
	.dw '.stabf ',0,0
	.dd LME8-_OSSched
	.dw 0x0d,0x0a
.code
LME8:
.code
.debug
	.dw '.stabs "OSSchedLock:F19",36,0,0,',0,0,offset _OSSchedLock,seg _OSSchedLock,0x0d,0x0a
.CODE
.public _OSSchedLock
_OSSchedLock:	.proc
.debug
	.dw '.stabn 0x44,0,464,',0,0
	.dd LM109-_OSSchedLock
	.dw 0x0d,0x0a
.code
LM109:
	// total=0, vars=0
	// frame_pointer_needed: 1
	push bp to [sp]
	bp=sp+1

	R1=BP+3
.debug
	.dw '.stabn 0x44,0,465,',0,0
	.dd LM110-_OSSchedLock
	.dw 0x0d,0x0a
.code
LM110:
	R2=[_OSRunning]	// QImode move
	CMP R2,1	// QImode compare
	NSJNZ L52	//QImode NE
.debug
	.dw '.stabn 0x44,0,466,',0,0
	.dd LM111-_OSSchedLock
	.dw 0x0d,0x0a
.code
LM111:
// GCC inline ASM start
	INT OFF 
	
// GCC inline ASM end
.debug
	.dw '.stabn 0x44,0,467,',0,0
	.dd LM112-_OSSchedLock
	.dw 0x0d,0x0a
.code
LM112:
	R2=[_OSLockNesting]	// QImode move
	R3=1	// QImode move
	[_OSLockNesting]=R2+R3  //addqi3_Qrr
.debug
	.dw '.stabn 0x44,0,468,',0,0
	.dd LM113-_OSSchedLock
	.dw 0x0d,0x0a
.code
LM113:
// GCC inline ASM start
	INT IRQ 
	INT FIQ 
	
// GCC inline ASM end
L52:
.debug
	.dw '.stabn 0x44,0,470,',0,0
	.dd LM114-_OSSchedLock
	.dw 0x0d,0x0a
.code
LM114:
.debug
	.dw '.stabn 0x44,0,470,',0,0
	.dd LM115-_OSSchedLock
	.dw 0x0d,0x0a
.code
LM115:
L51:

	pop bp from [sp]
	retf
	.endp	// end of OSSchedLock

.debug
	.dw '.stabf ',0,0
	.dd LME9-_OSSchedLock
	.dw 0x0d,0x0a
.code
LME9:
.code
.debug
	.dw '.stabs "OSSchedUnlock:F19",36,0,0,',0,0,offset _OSSchedUnlock,seg _OSSchedUnlock,0x0d,0x0a
.CODE
.public _OSSchedUnlock
_OSSchedUnlock:	.proc
.debug
	.dw '.stabn 0x44,0,488,',0,0
	.dd LM116-_OSSchedUnlock
	.dw 0x0d,0x0a
.code
LM116:
	// total=1, vars=1
	// frame_pointer_needed: 1
	push bp to [sp]
	sp-=1
	bp=sp+1

	R1=BP+4
	[BP]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,489,',0,0
	.dd LM117-_OSSchedUnlock
	.dw 0x0d,0x0a
.code
LM117:
	R1=[_OSRunning]	// QImode move
	CMP R1,1	// QImode compare
	NSJNZ L55	//QImode NE
.debug
	.dw '.stabn 0x44,0,490,',0,0
	.dd LM118-_OSSchedUnlock
	.dw 0x0d,0x0a
.code
LM118:
// GCC inline ASM start
	INT OFF 
	
// GCC inline ASM end
.debug
	.dw '.stabn 0x44,0,491,',0,0
	.dd LM119-_OSSchedUnlock
	.dw 0x0d,0x0a
.code
LM119:
	R1=[_OSLockNesting]	// QImode move
	CMP R1,0	// QImode test
	NSJZ L56	//QImode EQ
.debug
	.dw '.stabn 0x44,0,492,',0,0
	.dd LM120-_OSSchedUnlock
	.dw 0x0d,0x0a
.code
LM120:
	R1=[_OSLockNesting]	// QImode move
	R2=(-1)	// QImode move
	[_OSLockNesting]=R1+R2  //addqi3_Qrr
.debug
	.dw '.stabn 0x44,0,493,',0,0
	.dd LM121-_OSSchedUnlock
	.dw 0x0d,0x0a
.code
LM121:
	R1=[_OSLockNesting]	// QImode move
	R2=[_OSIntNesting]	// QImode move
	R1|=R2
	CMP R1,0	// QImode test
	NSJNZ L57	//QImode NE
.debug
	.dw '.stabn 0x44,0,494,',0,0
	.dd LM122-_OSSchedUnlock
	.dw 0x0d,0x0a
.code
LM122:
// GCC inline ASM start
	INT IRQ 
	INT FIQ 
	
// GCC inline ASM end
.debug
	.dw '.stabn 0x44,0,495,',0,0
	.dd LM123-_OSSchedUnlock
	.dw 0x0d,0x0a
.code
LM123:
	call _OSSched	// call without return value
.debug
	.dw '.stabn 0x44,0,496,',0,0
	.dd LM124-_OSSchedUnlock
	.dw 0x0d,0x0a
.code
LM124:
	pc=L58	// Indirect jump
L57:
.debug
	.dw '.stabn 0x44,0,497,',0,0
	.dd LM125-_OSSchedUnlock
	.dw 0x0d,0x0a
.code
LM125:
// GCC inline ASM start
	INT IRQ 
	INT FIQ 
	
// GCC inline ASM end
L58:
.debug
	.dw '.stabn 0x44,0,499,',0,0
	.dd LM126-_OSSchedUnlock
	.dw 0x0d,0x0a
.code
LM126:
	pc=L55	// Indirect jump
L56:
.debug
	.dw '.stabn 0x44,0,500,',0,0
	.dd LM127-_OSSchedUnlock
	.dw 0x0d,0x0a
.code
LM127:
// GCC inline ASM start
	INT IRQ 
	INT FIQ 
	
// GCC inline ASM end
L59:
L55:
.debug
	.dw '.stabn 0x44,0,503,',0,0
	.dd LM128-_OSSchedUnlock
	.dw 0x0d,0x0a
.code
LM128:
.debug
	.dw '.stabn 0x44,0,503,',0,0
	.dd LM129-_OSSchedUnlock
	.dw 0x0d,0x0a
.code
LM129:
L54:

	sp+=1
	pop bp from [sp]
	retf
	.endp	// end of OSSchedUnlock

.debug
	.dw '.stabf ',0,0
	.dd LME10-_OSSchedUnlock
	.dw 0x0d,0x0a
.code
LME10:
.code
.debug
	.dw '.stabs "OSStart:F19",36,0,0,',0,0,offset _OSStart,seg _OSStart,0x0d,0x0a
.CODE
.public _OSStart
_OSStart:	.proc
.debug
	.dw '.stabn 0x44,0,524,',0,0
	.dd LM130-_OSStart
	.dw 0x0d,0x0a
.code
LM130:
	// total=4, vars=4
	// frame_pointer_needed: 1
	push bp to [sp]
	sp-=4
	bp=sp+1

	R1=BP+7
	[bp+2]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,525,',0,0
	.dd LM131-_OSStart
	.dw 0x0d,0x0a
.code
LM131:
LBB6:
.debug
	.dw '.stabn 0x44,0,529,',0,0
	.dd LM132-_OSStart
	.dw 0x0d,0x0a
.code
LM132:
	R1=[_OSRunning]	// QImode move
	CMP R1,0	// QImode test
	NSJNZ L64	//QImode NE
.debug
	.dw '.stabn 0x44,0,530,',0,0
	.dd LM133-_OSStart
	.dw 0x0d,0x0a
.code
LM133:
	R1=_OSUnMapTbl	// QImode move
	R2=[_OSRdyGrp]	// QImode move
	R1 = R1 + R2	//addqi3
	R3=R1	// QImode move
	R2=[R3]	// QImode move
	[BP]=R2	// QImode move
.debug
	.dw '.stabn 0x44,0,531,',0,0
	.dd LM134-_OSStart
	.dw 0x0d,0x0a
.code
LM134:
	R2=BP	// QImode move
	R1=BP+1
	R3=[BP]	// QImode move
	R2=R3	// QImode move
	R2=R2+_OSRdyTbl
	R3=_OSUnMapTbl	// QImode move
	R4=R2	// QImode move
	R4=[R4]	// QImode move
	[bp+3]=R4	// QImode move
	R2=R3	// QImode move
	R2 = R2 + [bp+3]	//addqi3
	R4=R2	// QImode move
	R3=[R4]	// QImode move
	R2=R1	// QImode move
	[R2]=R3	// QImode move
.debug
	.dw '.stabn 0x44,0,532,',0,0
	.dd LM135-_OSStart
	.dw 0x0d,0x0a
.code
LM135:
	R2=[BP]	// QImode move
	R1=R2 lsl 3
	R2=BP	// QImode move
	R3=BP+1
	R4=R3	// QImode move
	R2=[R4]	// QImode move
	[_OSPrioHighRdy]=R1+R2  //addqi3_Qrr
.debug
	.dw '.stabn 0x44,0,533,',0,0
	.dd LM136-_OSStart
	.dw 0x0d,0x0a
.code
LM136:
	R1=[_OSPrioHighRdy]	// QImode move
	[_OSPrioCur]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,534,',0,0
	.dd LM137-_OSStart
	.dw 0x0d,0x0a
.code
LM137:
	R1=_OSTCBPrioTbl	// QImode move
	R2=[_OSPrioHighRdy]	// QImode move
	R1 = R1 + R2	//addqi3
	R3=R1	// QImode move
	R2=[R3]	// QImode move
	[_OSTCBHighRdy]=R2	// QImode move
.debug
	.dw '.stabn 0x44,0,535,',0,0
	.dd LM138-_OSStart
	.dw 0x0d,0x0a
.code
LM138:
	R1=[_OSTCBHighRdy]	// QImode move
	[_OSTCBCur]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,536,',0,0
	.dd LM139-_OSStart
	.dw 0x0d,0x0a
.code
LM139:
	call _OSStartHighRdy	// call without return value
L64:
.debug
	.dw '.stabn 0x44,0,538,',0,0
	.dd LM140-_OSStart
	.dw 0x0d,0x0a
.code
LM140:
LBE6:
.debug
	.dw '.stabn 0x44,0,538,',0,0
	.dd LM141-_OSStart
	.dw 0x0d,0x0a
.code
LM141:
L63:

	sp+=4
	pop bp from [sp]
	retf
	.endp	// end of OSStart

.debug
	.dw '.stabn 0xc0,0,0,',0,0
	.dd LBB6-_OSStart
	.dw 0x0d,0x0a
.code
.debug
	.dw '.stabs "y:21",128,0,0,0',0x0d,0x0a
.CODE
.debug
	.dw '.stabs "x:21",128,0,0,1',0x0d,0x0a
.CODE
.debug
	.dw '.stabn 0xe0,0,0,',0,0
	.dd LBE6-_OSStart
	.dw 0x0d,0x0a
.code
.debug
	.dw '.stabf ',0,0
	.dd LME11-_OSStart
	.dw 0x0d,0x0a
.code
LME11:
.code
.debug
	.dw '.stabs "OSStatInit:F19",36,0,0,',0,0,offset _OSStatInit,seg _OSStatInit,0x0d,0x0a
.CODE
.public _OSStatInit
_OSStatInit:	.proc
.debug
	.dw '.stabn 0x44,0,562,',0,0
	.dd LM142-_OSStatInit
	.dw 0x0d,0x0a
.code
LM142:
	// total=1, vars=1
	// frame_pointer_needed: 1
	push bp to [sp]
	sp-=1
	bp=sp+1

	R1=BP+4
	[BP]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,563,',0,0
	.dd LM143-_OSStatInit
	.dw 0x0d,0x0a
.code
LM143:
	R1=2	// QImode move
	[SP--]=R1	// QImode move
	call _OSTimeDly	// call without return value
	SP = SP + 1	//SP
.debug
	.dw '.stabn 0x44,0,564,',0,0
	.dd LM144-_OSStatInit
	.dw 0x0d,0x0a
.code
LM144:
// GCC inline ASM start
	INT OFF 
	
// GCC inline ASM end
.debug
	.dw '.stabn 0x44,0,565,',0,0
	.dd LM145-_OSStatInit
	.dw 0x0d,0x0a
.code
LM145:
	//split R1, 0
	R1=0	// QImode move
	R2=0	// QImode move
	//split [_OSIdleCtr], R1
	[_OSIdleCtr]=R1	// QImode move
	[_OSIdleCtr+1]=R2	// QImode move
.debug
	.dw '.stabn 0x44,0,566,',0,0
	.dd LM146-_OSStatInit
	.dw 0x0d,0x0a
.code
LM146:
// GCC inline ASM start
	INT IRQ 
	INT FIQ 
	
// GCC inline ASM end
.debug
	.dw '.stabn 0x44,0,567,',0,0
	.dd LM147-_OSStatInit
	.dw 0x0d,0x0a
.code
LM147:
	R1=64	// QImode move
	[SP--]=R1	// QImode move
	call _OSTimeDly	// call without return value
	SP = SP + 1	//SP
.debug
	.dw '.stabn 0x44,0,568,',0,0
	.dd LM148-_OSStatInit
	.dw 0x0d,0x0a
.code
LM148:
// GCC inline ASM start
	INT OFF 
	
// GCC inline ASM end
.debug
	.dw '.stabn 0x44,0,569,',0,0
	.dd LM149-_OSStatInit
	.dw 0x0d,0x0a
.code
LM149:
	//split R1, [_OSIdleCtr]
	R1=[_OSIdleCtr]	// QImode move
	R2=[_OSIdleCtr+1]	// QImode move
	//split [_OSIdleCtrMax], R1
	[_OSIdleCtrMax]=R1	// QImode move
	[_OSIdleCtrMax+1]=R2	// QImode move
.debug
	.dw '.stabn 0x44,0,570,',0,0
	.dd LM150-_OSStatInit
	.dw 0x0d,0x0a
.code
LM150:
	R1=1	// QImode move
	[_OSStatRdy]=R1	// QImode move
.debug
	.dw '.stabn 0x44,0,571,',0,0
	.dd LM151-_OSStatInit
	.dw 0x0d,0x0a
.code
LM151:
// GCC inline ASM start
	INT IRQ 
	INT FIQ 
	
// GCC inline ASM end
.debug
	.dw '.stabn 0x44,0,572,',0,0
	.dd LM152-_OSStatInit
	.dw 0x0d,0x0a
.code
LM152:
.debug
	.dw '.stabn 0x44,0,572,',0,0
	.dd LM153-_OSStatInit
	.dw 0x0d,0x0a
.code
LM153:
L66:

	sp+=1
	pop bp from [sp]
	retf
	.endp	// end of OSStatInit

.debug
	.dw '.stabf ',0,0
	.dd LME12-_OSStatInit
	.dw 0x0d,0x0a
.code
LME12:
.code
.debug
	.dw '.stabs "OSTaskIdle:F19",36,0,0,',0,0,offset _OSTaskIdle,seg _OSTaskIdle,0x0d,0x0a
.CODE
.public _OSTaskIdle
_OSTaskIdle:	.proc
.debug
	.dw '.stabn 0x44,0,589,',0,0
	.dd LM154-_OSTaskIdle
	.dw 0x0d,0x0a
.code
LM154:
	// total=4, vars=4
	// frame_pointer_needed: 1
	push bp to [sp]
	sp-=4
	bp=sp+1

	R1=BP+7
L68:
.debug
	.dw '.stabn 0x44,0,592,',0,0
	.dd LM155-_OSTaskIdle
	.dw 0x0d,0x0a
.code
LM155:
// GCC inline ASM start
	INT OFF 
	
// GCC inline ASM end
.debug
	.dw '.stabn 0x44,0,593,',0,0
	.dd LM156-_OSTaskIdle

⌨️ 快捷键说明

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