xref: /original-bsd/sys/vax/inline/inline.h (revision bdd86a84)
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) 06/05/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 COMMENTCHAR	'#'
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();
82