mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 08:24:18 +00:00
91 lines
2.1 KiB
C
91 lines
2.1 KiB
C
#
|
|
/*
|
|
Copyright 1981
|
|
Alcyon Corporation
|
|
8474 Commerce Av.
|
|
San Diego, Ca. 92121
|
|
*/
|
|
|
|
/*built-in literals*/
|
|
#define MOV 128
|
|
#define MOVL 129
|
|
#define JSR 130
|
|
#define CLR 131
|
|
#define CLRL 132
|
|
#define EXTW 133
|
|
#define EXTL 134
|
|
#define LEA 135
|
|
#define STK 136
|
|
|
|
/*built-in macros*/
|
|
#define TREE 141
|
|
#define LEFT 142
|
|
#define RIGHT 143
|
|
#define LOFFSET 144
|
|
#define ROFFSET 145
|
|
#define LADDR 146
|
|
#define RADDR 147
|
|
#define CR 148
|
|
#define NR 149
|
|
#define CAR 150
|
|
#define NAR 151
|
|
#define TLEFT 152
|
|
#define TRIGHT 153
|
|
#define TEITHER 154
|
|
#define TLEFTL 155
|
|
#define OP 156
|
|
#define AOP 157
|
|
#define MODSWAP 158
|
|
#define EXL 159
|
|
#define EXLR 160
|
|
#define EXLRN 161
|
|
#define EXRL 162
|
|
#define EXRLN 163
|
|
#define PSH 164
|
|
#define POP 165
|
|
#define POP8 166
|
|
|
|
/*modifiers for compiling sub-trees*/
|
|
#define S_INDR 1 /*indirection*/
|
|
#define S_STACK 2 /*onto stack*/
|
|
#define S_FORCC 4 /*set condition codes*/
|
|
#define S_NEXT 8 /*into next register*/
|
|
|
|
/*Sethy-Ullman values*/
|
|
#define SU_ZERO 0x000 /*zero*/
|
|
#define SU_ONE 0x100 /*one*/
|
|
#define SU_SMALL 0x200 /*constant between 1 and 8*/
|
|
#define SU_QUICK 0x300 /*quick constant between -128 and 127*/
|
|
#define SU_CONST 0x400 /*any constant*/
|
|
#define SU_AREG 0x500 /*A register*/
|
|
#define SU_REG 0x600 /*register*/
|
|
#define SU_ADDR 0x700 /*addressable*/
|
|
#define SU_XREG 0x800 /*A register used as data...*/
|
|
#define SU_EASY 0x900 /*easy*/
|
|
#define SU_HARD 0xa00 /*hard*/
|
|
#define SU_VHARD 0xb00 /*very hard ... function calls, etc.*/
|
|
#define SU_ANY 0xf00 /*anything*/
|
|
#define ADDRESSABLE(x) (x->t_su<=SU_ADDR)
|
|
#define NOTADDRESSABLE(x) (x->t_su>SU_ADDR)
|
|
#define LOADABLE(x) (x->t_su<=SU_XREG)
|
|
|
|
/*flag byte (operand type):*/
|
|
#define T_CHAR 1 /*char only*/
|
|
#define T_SHORT 2 /*short*/
|
|
#define T_INT 3 /*int only*/
|
|
#define T_LONG 4 /*long*/
|
|
#define T_UCHAR 5 /*unsigned char*/
|
|
#define T_USHORT 6 /*unsigned short*/
|
|
#define T_UNSN 7 /*unsigned int*/
|
|
#define T_ULONG 8 /*unsigned long*/
|
|
#define T_FLOAT 9 /*float*/
|
|
#define T_DOUB 10 /*double*/
|
|
#define T_ANY 11 /*int or word (implied)*/
|
|
#define T_INDR 0x10 /*pointer type (bit)*/
|
|
|
|
struct skeleton {
|
|
int sk_left;
|
|
int sk_right;
|
|
char *sk_def;
|
|
};
|