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

📄 asm_sprt.h

📁 2005 Center for Biological & Computational Learning at MIT and MIT All rights reserved. Permissio
💻 H
字号:
/************************************************************************
 *
 * asm_sprt.h
 *
 * (c) Copyright 2001-2004 Analog Devices, Inc.  All rights reserved.
 * $Revision: 1.10 $
 ************************************************************************/

#ifndef __ASM_SPRT_DEFINED
#define __ASM_SPRT_DEFINED

#if !defined(__ECC__)  /* Don't parse for C code */

//#define entry          /* nothing */ 
//#define leaf_entry     /* nothing */

//#ifdef __ADSP21020__
//#define ccall(x)       r2=i6; i6=i7; jump (pc, x) (db); dm(i7,m7)=r2; dm(i7,m7)=PC
//#define leaf_exit      i12=dm(m7,i6); jump (m14,i12) (db); i7=i6; i6=dm(0,I6)
//#define exit           leaf_exit 
//#else
//#define ccall(x)       cjump (x) (DB); dm(i7,m7)=r2; dm(i7,m7)=PC
//#ifdef __ADSP21160__
//#define leaf_exit    i12=dm(m7,i6); jump (m14,i12) (db); i7=i6; i6=dm(0,I6);
//#else
//#define leaf_exit    i12=dm(m7,i6); jump (m14,i12) (db); nop; RFRAME
//#endif
//#define exit	       leaf_exit
//#endif

//#define reads(x)        dm(x, i6)
//#define puts            dm(i7, m7)
//#define gets(x)         dm(x, i7)
//#define alter(x)        modify(i7, x)

//#define save_reg        puts=r0;\
//                        puts=r1;\
//                        puts=r2;\
//                        puts=r3;\
//                        puts=r4;\
//                        puts=r5;\
//                        puts=r6;\
//                        puts=r7;\
//                        puts=r8;\
//                        puts=r9;\
//                        puts=r10;\
//                        puts=r11;\
//                        puts=r12;\
//                        puts=r13;\
//                        puts=r14;\
//                        puts=r15

//#define restore_reg     r15=gets(1);\
//                        r14=gets(2);\
//                        r13=gets(3);\
//                        r12=gets(4);\
//                        r11=gets(5);\
//                        r10=gets(6);\
//                        r9 =gets(7);\
//                        r8 =gets(8);\
//                        r7 =gets(9);\
//                        r6 =gets(10);\
//                        r5 =gets(11);\
//                        r4 =gets(12);\
//                        r3 =gets(13);\
//                        r2 =gets(14);\
//                        r1 =gets(15);\
//                        r0 =gets(16);\
//                        alter(16)

#define entry	j26 = j27 - 0X40; k26 = k27 - 0x40;;\
				[j27+= 0xFFFFFFF0] = cjmp; k27 = k27 -0xF;; \
				q[j27 + 12] = j23:20; q[k27 +12] = k23:20;; \
				q[j27 + 8] = j19:16; q[k27 +8] = k19:16;; \
				q[j27 + 4] = XR31:28; q[k27 +4] = YR31:28;; \
				q[j27 += -4] = XR27:24; q[k27 += -4] = YR27:24;
				
#define leaf_entry	j26 = j27 - 0X40; k26 = k27 - 0x40;;\
					j27 = j27 - 0x10; k27 = k27 - 0x10;; \
					q[j27 + 12] = j23:20; q[k27 +12] = k23:20;; \
					q[j27 + 8] = j19:16; q[k27 +8] = k19:16;; \
					q[j27 + 4] = XR31:28; q[k27 +4] = YR31:28;; \
					q[j27 += -4] = XR27:24; q[k27 += -4] = YR27:24;

#define leaf_exit 	XR27:24 = q[j27 + 4]; YR27:24 = q[k27 + 4];;\
					XR31:28 = q[j27 + 8]; YR31:28 = q[k27 + 8];;\
					j19:16 = q[j27 + 12]; k19:16 = q[k27 + 12];;\
					j23:20 = q[j27 + 16]; k23:20 = q[k27 + 16];;\
					cjmp(ABS)(np); j27:24 = q[j26+68]; k27:24 = q[k26+68];  

#define exit		XR27:24 = q[j27 + 4]; YR27:24 = q[k27 + 4];;\
					XR31:28 = q[j27 + 8]; YR31:28 = q[k27 + 8];;\
					j19:16 = q[j27 + 12]; k19:16 = q[k27 + 12];;\
					j23:20 = q[j27 + 16]; k23:20 = q[k27 + 16];;\
					cjmp = [j26+64];;\
					cjmp(ABS)(np); j27:24 = q[j26+68]; k27:24 = q[k26+68];  

#define puts	[j27+=-4]
#define lputs	l[j27+=-4]
#define qputs	q[j27+=-4]

#define puts_jstack		puts
#define lputs_jstack	lputs
#define qputs_jstack	qputs

#define puts_kstack		[k27+=-4]
#define lputs_kstack	l[k27+=-4]
#define qputs_kstack	q[k27+=-4]

#define gets(x)		[j27+(4*x)];
#define lgets(x)	l[j27+(4*x)];
#define qgets(x)	q[j27+(4*x)];

#define gets_jstack(x)		gets(x)
#define lgets_jstack(x)		lgets(x)
#define qgets_jstack(x)		qgets(x)

#define gets_kstack(x)		[k27+(4*x)];
#define lgets_kstack(x)		l[k27+(4*x)];
#define qgets_kstack(x)		q[k27+(4*x)];

#define alter(x)	j27= j27+x;
#define alter_jstack(x)	alter(x)
#define alter_kstack(x) k27 = k27+x;

#define reads(x)	[j26+ (0x4B+x)];

#define save_reg	qputs_jstack = xr3:0; qputs_kstack = yr3:0;;\
					qputs_jstack = xr7:4; qputs_kstack = yr7:4;;\
					qputs_jstack = xr11:8; qputs_kstack = yr11:8;;\
					qputs_jstack = xr15:12; qputs_kstack = yr15:12;;\
					qputs_jstack = xr19:16; qputs_kstack = yr19:16;;\
					qputs_jstack = xr23:20; qputs_kstack = yr23:20;;\
					qputs_jstack = xr27:24; qputs_kstack = yr27:24;;\
					qputs_jstack = xr31:28; qputs_kstack = yr31:28;
					
#define restore_reg		xr31:28 = qgets_jstack(1) yr31:28 = qgets_kstack(1);\
						xr27:24 = qgets_jstack(2) yr27:24 = qgets_kstack(2);\
						xr23:20 = qgets_jstack(3) yr23:20 = qgets_kstack(3);\
						xr19:16 = qgets_jstack(4) yr19:16 = qgets_kstack(4);\
						xr15:12 = qgets_jstack(5) yr15:12 = qgets_kstack(5);\
						xr11:8 = qgets_jstack(6) yr11:8 = qgets_kstack(6);\
						xr7:4 = qgets_jstack(7) yr7:4 = qgets_kstack(7);\
						xr3:0 = qgets_jstack(8) yr3:0 = qgets_kstack(8);\
						alter_jstack(32) alter_kstack(32)
	

#endif  /* __ECC__ */ 

#endif  /* __ASM_SPRT_DEFINED */

⌨️ 快捷键说明

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