Google
 

Trailing-Edge - PDP-10 Archives - SRI_NIC_PERM_FS_1_19910112 - c/old/kcc/ccreg.h
There are 8 other files named ccreg.h in the archive. Click here to see a list.
/*
** ccreg.h - declarations for KCC register management
** David Eppstein / Stanford University / 8 Mar 1985
*/


#define REGZERO	000			/* AC0, never used for many reasons */
#define RETVAL	001			/* register for subroutine return */
#define RETDBL	002			/* second return for doublewords */
#define MINREG	003			/* lowest scratch register */
#define	MAXREG	015			/* highest scratch register */
#define SCRREG	016			/* scratch for realcode() */
#define	SP	017			/* push down stack pointer */

#define REGMASK 017			/* mask to get reg only from bp idx */
#define NREGS   020			/* number of physical registers */

struct vreg {				/* virtual register */
    int flags;				/* spilled, double, etc */
    int location;			/* reg number or stack offset */
    int prevloc;			/* where to back stack to */
    struct vreg *next, *prev;		/* double linked list pointers */
};

#define SPILLED 01			/* register is on stack */
#define REGPAIR 02			/* register is a doubleword */

struct vreg *getreg(), *getpair();	/* allocate register or pair */
struct vreg *getret(), *getrpair();	/* same for return value */
int rfree();				/* whther register is assigned */
void release(), spill();		/* deallocate reg; spill all regs */
void widen(), narrow();			/* change between reg and pair */
void iniregs();				/* set up regs for new routine */
int realreg();				/* despill and give physical reg */
void backreg();				/* skip over MOVE w/o releasing */