/* mac2defs.h 1.4 88/01/19 */ /* * Tahoe Registers */ /* * Scratch registers */ #define R0 0 #define R1 1 #define R2 2 #define R3 3 #define R4 4 #define R5 5 /* * Register variables */ #define R6 6 #define R7 7 #define R8 8 #define R9 9 #define R10 10 #define R11 11 #define R12 12 /* * Special purpose registers */ #define FP 13 /* frame pointer */ #define SP 14 /* stack pointer */ #define PC 15 /* program counter */ /* * Floating registers */ #define ACC 16 /* accumulator */ #define TMPREG FP /* reg off which temporaries are referenced */ #define REGSZ 16 /* size of register set */ #define R2REGS 1 /* permit double indexing */ extern int fregs; extern int maxargs; #define BYTEOFF(x) ((x)&03) #define wdal(k) (BYTEOFF(k)==0) /* word align */ #define BITOOR(x) ((x)>>3) /* bit offset to oreg offset */ /* * Some macros used in store(): * just evaluate the arguments, and be done with it... */ #define STOARG(p) #define STOFARG(p) #define STOSTARG(p) /* * Some short routines that get called an awful lot are actually macros. */ #define szty(t) ((t) == DOUBLE ? 2 : 1) #define shltype(o, p) \ ((o) == REG || (o) == NAME || (o) == ICON || \ (o) == OREG || ((o) == UNARY MUL && shumul((p)->in.left))) #define ncopy(q, p) ((q)->in = (p)->in) #define MYREADER(p) myreader(p) int optim2(); #define SIREG (SPECIAL|7) /* indexed OREG */ int special(); /* additional special shapes */ #define callchk(p) if ((p)->in.op != FORTCALL) allchk()