1File: CSKEL.H                                                             Page       1
     1   /*
     2   	Copyright 1981
     3   	Alcyon Corporation
     4   	8474 Commerce Av.
     5   	San Diego, Ca.  92121
     6   */
     7    
     8   /*built-in literals*/
     9   #define	MOV		128
    10   #define	MOVL	129
    11   #define	JSR		130
    12   #define	CLR		131
    13   #define	CLRL	132
    14   #define	EXTW	133
    15   #define	EXTL	134
    16   #define	LEA		135
    17   #define	STK		136
    18    
    19   /*built-in macros*/
    20   #define	TREE	141
    21   #define	LEFT	142
    22   #define	RIGHT	143
    23   #define	LOFFSET	144
    24   #define	ROFFSET	145
    25   #define	LADDR	146
    26   #define	RADDR	147
    27   #define	CR		148
    28   #define	NR		149
    29   #define	CAR		150
    30   #define	NAR		151
    31   #define	TLEFT	152
    32   #define	TRIGHT	153
    33   #define	TEITHER	154
    34   #define	TLEFTL	155
    35   #define	OP		156
    36   #define	AOP		157
    37   #define	MODSWAP	158
    38   #define	EXL		159
    39   #define	EXLR	160
    40   #define	EXLRN	161
    41   #define	EXRL	162
    42   #define	EXRLN	163
    43   #define	PSH		164
    44   #define	POP		165
    45   #define	POP8	166
    46   #define	OPCALL	167
    47   #define	POP4	169
    48   #define	LADDRP	168
    49    
    50   /*modifiers for compiling sub-trees*/
    51   #define	S_INDR		1		/*indirection*/
    52   #define	S_STACK		2		/*onto stack*/
    53   #define	S_FORCC		4		/*set condition codes*/
    54   #define	S_NEXT		8		/*into next register*/
    55    
    56   /*Sethy-Ullman values*/
    57   #define	SU_ZERO		0x000		/*zero*/
    58   #define	SU_ONE		0x100		/*one*/
    59   #define	SU_SMALL	0x200		/*constant between 1 and 8*/
1File: CSKEL.H                                                             Page       2
    60   #define	SU_QUICK	0x300		/*quick constant between -128 and 127*/
    61   #define	SU_CONST	0x400		/*any constant*/
    62   #define	SU_AREG		0x500		/*A register*/
    63   #define	SU_REG		0x600		/*register*/
    64   #define	SU_ADDR		0x700		/*addressable*/
    65   #define	SU_XREG		0x800		/*A register used as data...*/
    66   #define	SU_EASY		0x900		/*easy*/
    67   #define	SU_HARD		0xa00		/*hard*/
    68   #define	SU_VHARD	0xb00		/*very hard ... function calls, etc.*/
    69   #define	SU_ANY		0xf00		/*anything*/
    70   #define	ADDRESSABLE(x)	(x->t_su<=SU_ADDR)
    71   #define	NOTADDRESSABLE(x)	(x->t_su>SU_ADDR)
    72   #define	LOADABLE(x)			(x->t_su<=SU_XREG)
    73    
    74   /*flag byte (operand type):*/
    75   #define	T_CHAR		1		/*char only*/
    76   #define	T_SHORT		2		/*short*/
    77   #define	T_INT		3		/*int only*/
    78   #define	T_LONG		4		/*long*/
    79   #define	T_UCHAR		5		/*unsigned char*/
    80   #define	T_USHORT	6		/*unsigned short*/
    81   #define	T_UNSN		7		/*unsigned int*/
    82   #define	T_ULONG		8		/*unsigned long*/
    83   #define	T_FLOAT		9		/*float*/
    84   #define	T_DOUB		10		/*double*/
    85   #define	T_ANY		11		/*int or word (implied)*/
    86   #define	T_INDR		0x10	/*pointer type (bit)*/
    87    
    88   struct skeleton {
    89   	int sk_left;
    90   	int sk_right;
    91   	char *sk_def;
    92   };
