|
|
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.