|
|
1.1 ! root 1: /* Copyright (c) 1984 Regents of the University of California */ ! 2: ! 3: /* @(#)inline.h 1.2 (Berkeley) 8/20/84 */ ! 4: ! 5: /* ! 6: * COMMENTCHAR is the character delimiting comments in the assembler. ! 7: * LABELCHAR is the character that separates labels from instructions. ! 8: * ARGSEPCHAR is the character that separates arguments in instructions. ! 9: * QUOTECHAR is the character that quotes strings in the assember. ! 10: */ ! 11: #define COMMENTCHAR '#' ! 12: #define LABELCHAR ':' ! 13: #define ARGSEPCHAR ',' ! 14: #define QUOTECHAR '"' ! 15: ! 16: /* ! 17: * Expansion parameters: ! 18: * QUEUESIZE is the number of instructions to be considered for ! 19: * integration of argument pushes and pops ! 20: * MAXLINELEN is the longest expected input line ! 21: * MAXARGS is the maximum number of arguments in an assembly instruction ! 22: */ ! 23: #define QUEUESIZE 16 ! 24: #define MAXLINELEN 256 ! 25: #define MAXARGS 10 ! 26: ! 27: /* ! 28: * The following global variables are used to manipulate the queue of ! 29: * recently seen instructions. ! 30: * line - The queue of instructions. ! 31: * bufhead - Pointer to next availble queue slot. It is not ! 32: * considered part of te instruction stream until ! 33: * bufhead is advanced. ! 34: * buftail - Pointer to last instruction in queue. ! 35: * Note that bufhead == buftail implies that the queue is empty. ! 36: */ ! 37: int bufhead, buftail; ! 38: char line[QUEUESIZE][MAXLINELEN]; ! 39: ! 40: #define SUCC(qindex) ((qindex) + 1 == QUEUESIZE ? 0 : (qindex) + 1) ! 41: #define PRED(qindex) ((qindex) - 1 < 0 ? QUEUESIZE - 1 : (qindex) - 1) ! 42: ! 43: /* ! 44: * Hash table headers should be twice as big as the number of patterns. ! 45: * They must be a power of two. ! 46: */ ! 47: #define HSHSIZ 128 ! 48: ! 49: /* ! 50: * These tables specify the substitutions that are to be done. ! 51: */ ! 52: struct pats { ! 53: char *name; ! 54: char *replace; ! 55: struct pats *next; ! 56: int size; ! 57: }; ! 58: struct pats *patshdr[HSHSIZ]; ! 59: extern struct pats language_ptab[], libc_ptab[], machine_ptab[]; ! 60: ! 61: /* ! 62: * This table defines the set of instructions that demark the ! 63: * end of a basic block. ! 64: */ ! 65: struct inststoptbl { ! 66: char *name; ! 67: struct inststoptbl *next; ! 68: int size; ! 69: }; ! 70: struct inststoptbl *inststoptblhdr[HSHSIZ]; ! 71: extern struct inststoptbl inststoptable[]; ! 72: ! 73: /* ! 74: * This structure contains source variables to be used instead of temporary ! 75: * register. ! 76: */ ! 77: struct oparg { ! 78: int reg; ! 79: char source[16]; ! 80: }; ! 81: ! 82: #define F_VALUE 1 ! 83: #define F_INDIRECT 2 ! 84: ! 85: /* ! 86: * Miscellaneous functions. ! 87: */ ! 88: char *newline(), *copyline(), *doreplaceon();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.