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

📄 os_cpu_c.asm

📁 基于TI的2407移植的ucos程序范例
💻 ASM
字号:
*******************************************************
* TMS320C2x/C2xx/C5x ANSI C Codegen Version 7.00       
*******************************************************
;	C:\TIC2XX\C2000\CGTOOLS\BIN\DSPAC.EXE -v2xx Os_cpu_c.c C:\WINDOWS\TEMP\Os_cpu_c.if 
;	dspopt NOT RUN
;	C:\TIC2XX\C2000\CGTOOLS\BIN\DSPCG.EXE -o -v2xx -o C:\WINDOWS\TEMP\Os_cpu_c.if C:\WINDOWS\TEMP\Os_cpu_c.asm C:\WINDOWS\TEMP\Os_cpu_c.tmp 
	.port
	.bss	_OSTickDOSCtr,1,1
	.file	"Os_cpu_c.c"
	.file	"os_cpu.h"
	.sym	_BOOLEAN,0,12,13,16
	.sym	_INT8U,0,12,13,16
	.sym	_INT8S,0,2,13,16
	.sym	_INT16U,0,14,13,16
	.sym	_INT16S,0,4,13,16
	.sym	_INT32U,0,15,13,32
	.sym	_INT32S,0,5,13,32
	.sym	_FP32,0,6,13,32
	.sym	_FP64,0,7,13,32
	.sym	_OS_STK,0,14,13,16
	.globl	_OSTickDOSCtr
	.file	"ucos_ii.h"

	.stag	.fake0,96
	.member	_OSEventPtr,0,16,8,16
	.member	_OSEventTbl,16,60,8,32,,2
	.member	_OSEventCnt,48,14,8,16
	.member	_OSEventType,64,12,8,16
	.member	_OSEventGrp,80,12,8,16
	.eos
	.sym	_OS_EVENT,0,8,13,96,.fake0

	.stag	.fake1,64
	.member	_OSMsg,0,16,8,16
	.member	_OSEventTbl,16,60,8,32,,2
	.member	_OSEventGrp,48,12,8,16
	.eos
	.sym	_OS_MBOX_DATA,0,8,13,64,.fake1

	.stag	.fake2,64
	.member	_OSCnt,0,14,8,16
	.member	_OSEventTbl,16,60,8,32,,2
	.member	_OSEventGrp,48,12,8,16
	.eos
	.sym	_OS_SEM_DATA,0,8,13,64,.fake2

	.stag	_os_tcb,192
	.member	_OSTCBStkPtr,0,30,8,16
	.member	_OSTCBNext,16,24,8,16,_os_tcb
	.member	_OSTCBPrev,32,24,8,16,_os_tcb
	.member	_OSTCBEventPtr,48,24,8,16,.fake0
	.member	_OSTCBMsg,64,16,8,16
	.member	_OSTCBDly,80,14,8,16
	.member	_OSTCBStat,96,12,8,16
	.member	_OSTCBPrio,112,12,8,16
	.member	_OSTCBX,128,12,8,16
	.member	_OSTCBY,144,12,8,16
	.member	_OSTCBBitX,160,12,8,16
	.member	_OSTCBBitY,176,12,8,16
	.eos
	.sym	_OS_TCB,0,8,13,192,_os_tcb
	.globl	_OSCtxSwCtr
	.globl	_OSEventFreeList
	.globl	_OSEventTbl
	.globl	_OSIdleCtr
	.globl	_OSCPUUsage
	.globl	_OSIdleCtrMax
	.globl	_OSIdleCtrRun
	.globl	_OSStatRdy
	.globl	_OSIntNesting
	.globl	_OSLockNesting
	.globl	_OSPrioCur
	.globl	_OSPrioHighRdy
	.globl	_OSRdyGrp
	.globl	_OSRdyTbl
	.globl	_OSRunning
	.globl	_OSTaskCtr
	.globl	_OSTCBCur
	.globl	_OSTCBFreeList
	.globl	_OSTCBHighRdy
	.globl	_OSTCBList
	.globl	_OSTCBPrioTbl
	.globl	_OSTime
	.globl	_OSMapTbl
	.globl	_OSUnMapTbl
	.globl	_OSMboxAccept
	.globl	_OSMboxCreate
	.globl	_OSMboxPend
	.globl	_OSMboxPost
	.globl	_OSMboxQuery
	.globl	_OSSemAccept
	.globl	_OSSemCreate
	.globl	_OSSemPend
	.globl	_OSSemPost
	.globl	_OSSemQuery
	.globl	_OSTaskCreate
	.globl	_OSTaskQuery
	.globl	_OSTimeDly
	.globl	_OSTimeDlyHMSM
	.globl	_OSTimeDlyResume
	.globl	_OSTimeGet
	.globl	_OSTimeSet
	.globl	_OSTimeTick
	.globl	_OSInit
	.globl	_OSIntEnter
	.globl	_OSIntExit
	.globl	_OSSchedLock
	.globl	_OSSchedUnlock
	.globl	_OSStart
	.globl	_OSStatInit
	.globl	_OSVersion
	.globl	_OSEventTaskRdy
	.globl	_OSEventTaskWait
	.globl	_OSEventTO
	.globl	_OSEventWaitListInit
	.globl	_OSSched
	.globl	_OSTaskIdle
	.globl	_OSTaskStat
	.globl	_OSTCBInit
	.globl	_OSCtxSw
	.globl	_OSIntCtxSw
	.globl	_OSStartHighRdy
	.globl	_OSTaskCreateHook
	.globl	_OSTaskDelHook
	.globl	_OSTaskStatHook
	.globl	_OSTaskStkInit
	.globl	_OSTaskSwHook
	.globl	_OSTickISR
	.globl	_OSTimeTickHook
	.file	"Os_cpu_c.c"
	.globl	_c_int0
	.text

	.sym	_OSTaskStkInit,_OSTaskStkInit,96,2,0
	.globl	_OSTaskStkInit

	.func	55
;>>>> 	void *OSTaskStkInit (void (*task)(void *pd), void *pdata, void *ptos, INT16U opt)
******************************************************
* FUNCTION DEF : _OSTaskStkInit
******************************************************
_OSTaskStkInit:

LF1	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,2
	LAR	AR0,*0+,AR2

	.sym	_task,-3+LF1,144,9,16
	.sym	_pdata,-4+LF1,16,9,16
	.sym	_ptos,-5+LF1,16,9,16
	.sym	_opt,-6+LF1,14,9,16
	.sym	_stk,1,30,1,16
	.line	2
;>>>> 	    UWORD *stk;
	.line	6
;>>>> 	    opt    = opt;                           /* 'opt' is not used, prevent warning                      */
	.line	7
;>>>> 	    stk    = (UWORD *)ptos;                /* Load stack pointer                                      */
	LARK	AR2,-5+LF1
	MAR	*0+
	LAC	* 
	ADRK	6-LF1
	SACL	* 
	.line	8
;>>>> 	    *stk++ = (UWORD)pdata;         		   /* 将数据区地址传递到堆栈中*/
	LAR	AR3,* 
	SBRK	5-LF1
	LAC	* ,AR3
	SACL	*+,AR2
	ADRK	5-LF1
	SAR	AR3,* 
	.line	9
;>>>> 	    *stk++ = (UWORD)pdata; 
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	10
;>>>> 	     stk++ ;                         	   /*留出一个字,任务的汇编代码将把返回地址弹出到这里*/
	LAR	AR3,* ,AR3
	MAR	*+,AR2
	SAR	AR3,* ,AR3
	.line	11
;>>>> 	    *stk++ = (UWORD)0x2000;                /*ST1*/
	SPLK	#8192,*+,AR2
	SAR	AR3,* 
	.line	12
;>>>> 	    *stk++ = (UWORD)0x2200;               	/*ST0*/
	LAR	AR3,* ,AR3
	SPLK	#8704,*+,AR2
	SAR	AR3,* 
	.line	13
;>>>> 	    *stk++ = (UWORD)0x0000;                /* 累加器高16位                                 */
	LAR	AR3,* ,AR3
	LACK	0
	SACL	*+,AR2
	SAR	AR3,* 
	.line	14
;>>>> 	    *stk++ = (UWORD)0x0000;         		/* 累加器低16位                   */
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	15
;>>>> 	    *stk++ = (UWORD)0x0000;                /*乘法寄存器高16位*/ 
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	16
;>>>> 	    *stk++ = (UWORD)0x0000;                /* 临时寄存器TREG                                            */
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	17
;>>>> 	    *stk++ = (UWORD)0x0000;                /* 乘法寄存器低16位 */
;>>>> 	    //ptos=stk;                                           
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	19
;>>>> 	    *stk++ = (UWORD)0x0000;                /* AR0 = 0xDDDD                                             */
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	20
;>>>> 	    *stk++ = (UWORD)0x0000;                /* AR2 = 0xBBBB                                             */
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	21
;>>>> 	    *stk++ = (UWORD)0x0000;                /* AR3 = 0x0000                                             */
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	22
;>>>> 	    *stk++ = (UWORD)0x0000;                /* AR4 = 0x1111                                             */
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	23
;>>>> 	    *stk++ = (UWORD)0x0000;                /* AR5 = 0x2222                                             */
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	24
;>>>> 	    *stk++ = (UWORD)0x0000;                /* AR6 = 0x3333                                             */
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	25
;>>>> 	    *stk++ = (UWORD)0x0000;                /* AR7 = 0x4444                                             */
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	26
;>>>> 	    *stk++ = (UWORD)task;                  /* 中断返回地址=任务其始地址                          */
	LAR	AR3,* 
	SBRK	4-LF1
	LAC	* ,AR3
	SACL	*+,AR2
	ADRK	4-LF1
	SAR	AR3,* 
	.line	27
;>>>> 		*stk++ = (UWORD)c_int0;                  
	LALK	_c_int0+0
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	28
;>>>> 		*stk++=(UWORD)c_int0;						 
	LALK	_c_int0+0
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	29
;>>>> 		*stk++=(UWORD)c_int0;
	LALK	_c_int0+0
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	30
;>>>> 		*stk++=(UWORD)c_int0;
	LALK	_c_int0+0
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	31
;>>>> 		*stk++=(UWORD)c_int0;
	LALK	_c_int0+0
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	32
;>>>> 		*stk++=(UWORD)c_int0;   
	LALK	_c_int0+0
	LAR	AR3,* ,AR3
	SACL	*+,AR2
	SAR	AR3,* 
	.line	33
;>>>> 	    *(UWORD*)ptos=(UWORD)ptos;      /*设置帧指针*/
	SBRK	6-LF1
	LAR	AR3,* 
	LAC	* ,AR3
	SACL	* ,AR2
	.line	34
;>>>> 	    return (stk);
	ADRK	6-LF1
	ZALS	* 
EPI0_1:
	.line	35
	MAR	* ,AR1
	SBRK	3
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	89,000000000H,2

	.sym	_OSTaskCreateHook,_OSTaskCreateHook,32,2,0
	.globl	_OSTaskCreateHook

	.func	104
;>>>> 	void OSTaskCreateHook (OS_TCB *ptcb)
******************************************************
* FUNCTION DEF : _OSTaskCreateHook
******************************************************
_OSTaskCreateHook:

LF2	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

	.sym	_ptcb,-3+LF2,24,9,16,_os_tcb
	.line	2
	.line	3
;>>>> 	    ptcb = ptcb;                       /* Prevent compiler warning                                     */
EPI0_2:
	.line	4
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	107,000000000H,1

	.sym	_OSTaskDelHook,_OSTaskDelHook,32,2,0
	.globl	_OSTaskDelHook

	.func	121
;>>>> 	void OSTaskDelHook (OS_TCB *ptcb)
******************************************************
* FUNCTION DEF : _OSTaskDelHook
******************************************************
_OSTaskDelHook:

LF3	.set	0

	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

	.sym	_ptcb,-3+LF3,24,9,16,_os_tcb
	.line	2
	.line	3
;>>>> 	    ptcb = ptcb;                       /* Prevent compiler warning                                     */
EPI0_3:
	.line	4
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	124,000000000H,1

	.sym	_OSTaskSwHook,_OSTaskSwHook,32,2,0
	.globl	_OSTaskSwHook

	.func	141
;>>>> 	void OSTaskSwHook (void)
******************************************************
* FUNCTION DEF : _OSTaskSwHook
******************************************************
_OSTaskSwHook:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

EPI0_4:
	.line	3
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	143,000000000H,1

	.sym	_OSTaskStatHook,_OSTaskStatHook,32,2,0
	.globl	_OSTaskStatHook

	.func	155
;>>>> 	void OSTaskStatHook (void)
******************************************************
* FUNCTION DEF : _OSTaskStatHook
******************************************************
_OSTaskStatHook:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

EPI0_5:
	.line	3
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	157,000000000H,1

	.sym	_OSTimeTickHook,_OSTimeTickHook,32,2,0
	.globl	_OSTimeTickHook

	.func	170
;>>>> 	void OSTimeTickHook (void)
******************************************************
* FUNCTION DEF : _OSTimeTickHook
******************************************************
_OSTimeTickHook:
	POPD	*+
	SAR	AR0,*+
	SAR	AR1,*
	LARK	AR0,1
	LAR	AR0,*0+

EPI0_6:
	.line	3
	SBRK	2
	LAR	AR0,*-
	PSHD	*
	RET

	.endfunc	172,000000000H,1

	.sym	_OSTickDOSCtr,_OSTickDOSCtr,12,2,16
	.globl	_OSTickDOSCtr
	.end

⌨️ 快捷键说明

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