|
|
1.1 ! root 1: /* mac2defs.h 1.4 88/01/19 */ ! 2: ! 3: /* ! 4: * Tahoe Registers ! 5: */ ! 6: ! 7: /* ! 8: * Scratch registers ! 9: */ ! 10: #define R0 0 ! 11: #define R1 1 ! 12: #define R2 2 ! 13: #define R3 3 ! 14: #define R4 4 ! 15: #define R5 5 ! 16: ! 17: /* ! 18: * Register variables ! 19: */ ! 20: #define R6 6 ! 21: #define R7 7 ! 22: #define R8 8 ! 23: #define R9 9 ! 24: #define R10 10 ! 25: #define R11 11 ! 26: #define R12 12 ! 27: ! 28: /* ! 29: * Special purpose registers ! 30: */ ! 31: #define FP 13 /* frame pointer */ ! 32: #define SP 14 /* stack pointer */ ! 33: #define PC 15 /* program counter */ ! 34: ! 35: /* ! 36: * Floating registers ! 37: */ ! 38: #define ACC 16 /* accumulator */ ! 39: ! 40: #define TMPREG FP /* reg off which temporaries are referenced */ ! 41: #define REGSZ 16 /* size of register set */ ! 42: ! 43: #define R2REGS 1 /* permit double indexing */ ! 44: ! 45: extern int fregs; ! 46: extern int maxargs; ! 47: ! 48: #define BYTEOFF(x) ((x)&03) ! 49: #define wdal(k) (BYTEOFF(k)==0) /* word align */ ! 50: #define BITOOR(x) ((x)>>3) /* bit offset to oreg offset */ ! 51: ! 52: /* ! 53: * Some macros used in store(): ! 54: * just evaluate the arguments, and be done with it... ! 55: */ ! 56: #define STOARG(p) ! 57: #define STOFARG(p) ! 58: #define STOSTARG(p) ! 59: ! 60: /* ! 61: * Some short routines that get called an awful lot are actually macros. ! 62: */ ! 63: #define szty(t) ((t) == DOUBLE ? 2 : 1) ! 64: #define shltype(o, p) \ ! 65: ((o) == REG || (o) == NAME || (o) == ICON || \ ! 66: (o) == OREG || ((o) == UNARY MUL && shumul((p)->in.left))) ! 67: #define ncopy(q, p) ((q)->in = (p)->in) ! 68: ! 69: #define MYREADER(p) myreader(p) ! 70: int optim2(); ! 71: #define SIREG (SPECIAL|7) /* indexed OREG */ ! 72: int special(); /* additional special shapes */ ! 73: #define callchk(p) if ((p)->in.op != FORTCALL) allchk()
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.