1: /*
2: * Copyright (c) 1984, 1986 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: *
6: * @(#)inline.h 7.1 (Berkeley) 6/5/86
7: */
8:
9: /*
10: * COMMENTCHAR is the character delimiting comments in the assembler.
11: * LABELCHAR is the character that separates labels from instructions.
12: * ARGSEPCHAR is the character that separates arguments in instructions.
13: */
14: #define '#'
15: #define LABELCHAR ':'
16: #define ARGSEPCHAR ','
17:
18: /*
19: * Expansion parameters:
20: * QUEUESIZE is the number of instructions to be considered for
21: * integration of argument pushes and pops
22: * MAXLINELEN is the longest expected input line
23: * MAXARGS is the maximum number of arguments in an assembly instruction
24: */
25: #define QUEUESIZE 16
26: #define MAXLINELEN 1024
27: #define MAXARGS 10
28:
29: /*
30: * The following global variables are used to manipulate the queue of
31: * recently seen instructions.
32: * line - The queue of instructions.
33: * bufhead - Pointer to next availble queue slot. It is not
34: * considered part of te instruction stream until
35: * bufhead is advanced.
36: * buftail - Pointer to last instruction in queue.
37: * Note that bufhead == buftail implies that the queue is empty.
38: */
39: int bufhead, buftail;
40: char line[QUEUESIZE][MAXLINELEN];
41:
42: #define SUCC(qindex) ((qindex) + 1 == QUEUESIZE ? 0 : (qindex) + 1)
43: #define PRED(qindex) ((qindex) - 1 < 0 ? QUEUESIZE - 1 : (qindex) - 1)
44:
45: /*
46: * Hash table headers should be twice as big as the number of patterns.
47: * They must be a power of two.
48: */
49: #define HSHSIZ 128
50:
51: /*
52: * These tables specify the substitutions that are to be done.
53: */
54: struct pats {
55: int args;
56: char *name;
57: char *replace;
58: struct pats *next;
59: int size;
60: };
61: struct pats *patshdr[HSHSIZ];
62: extern struct pats language_ptab[], libc_ptab[], machine_ptab[];
63: extern struct pats vax_libc_ptab[], vaxsubset_libc_ptab[];
64: extern struct pats vax_ptab[], vaxsubset_ptab[];
65:
66: /*
67: * This table defines the set of instructions that demark the
68: * end of a basic block.
69: */
70: struct inststoptbl {
71: char *name;
72: struct inststoptbl *next;
73: int size;
74: };
75: struct inststoptbl *inststoptblhdr[HSHSIZ];
76: extern struct inststoptbl inststoptable[];
77:
78: /*
79: * Miscellaneous functions.
80: */
81: char *newline(), *copyline(), *doreplaceon();
Defined variables
line
defined in line
40; used 10 times
Defined struct's
pats
defined in line
54; used 32 times
Defined macros
defined in line
14; used 2 times
PRED
defined in line
43; used 1 times
SUCC
defined in line
42; used 3 times
Usage of this include