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 };