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 '#'
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();
Defined variables
line
defined in line
38; used 11 times
Defined struct's
oparg
defined in line
77; used 4 times
pats
defined in line
52; used 18 times
Defined macros
defined in line
11; used 2 times
PRED
defined in line
41; used 1 times
SUCC
defined in line
40; used 3 times
Usage of this include