projects
/
unix-history
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
blame
|
history
|
raw
|
HEAD
Research V6 development
[unix-history]
/
usr
/
source
/
c
/
c1h.c
/*
* C pass 2 header
*/
#define swsiz 200
#define ossiz 500
struct
tnode
{
int
op
;
int
type
;
int
degree
;
struct
tnode
*
tr1
, *
tr2
;
};
struct
bnode
{
int
bop
;
struct
tnode
*
btree
;
int
lbl
;
int
cond
;
};
struct
tname
{
int
nop
;
int
ntype
;
int
elsize
;
char
class
;
char
regno
;
int
offset
;
int
nloc
;
};
/*
* for field selections
*/
struct
tsel
{
int
op
;
int
type
;
int
degree
;
struct
tnode
*
tr1
;
char
flen
;
char
bitoffs
;
};
struct
tconst
{
int
cop
;
int
ctype
;
int
cdeg
;
int
value
;
};
struct
optab
{
char
tabdeg1
;
char
tabtyp1
;
char
tabdeg2
;
char
tabtyp2
;
char
*
tabstring
;
};
struct
table
{
int
tabop
;
struct
optab
*
tabp
;
};
struct
instab
{
int
iop
;
char
*
str1
;
char
*
str2
;
};
struct
swtab
{
int
swlab
;
int
swval
;
};
char
maprel
[];
char
notrel
[];
int
nreg
;
int
isn
;
int
namsiz
;
int
line
;
char
ascbuf
[
518
];
int
nerror
;
struct
table cctab
[];
struct
table efftab
[];
struct
table regtab
[];
struct
table sptab
[];
struct
table lsptab
[];
struct
instab instab
[];
struct
instab branchtab
[];
int
opdope
[];
char
*
opntab
[];
int
nstack
;
int
nfloat
;
int
*
spacep
;
int
treespace
[
ossiz
];
int
eolflg
;
struct
tconst czero
,
cone
,
fczero
;
/*
operators
*/
#define EOF 0
#define SEMI 1
#define LBRACE 2
#define RBRACE 3
#define LBRACK 4
#define RBRACK 5
#define LPARN 6
#define RPARN 7
#define COLON 8
#define COMMA 9
#define FSEL 10
#define KEYW 19
#define NAME 20
#define CON 21
#define STRING 22
#define FCON 23
#define SFCON 24
#define AUTOI 27
#define AUTOD 28
#define INCBEF 30
#define DECBEF 31
#define INCAFT 32
#define DECAFT 33
#define EXCLA 34
#define AMPER 35
#define STAR 36
#define NEG 37
#define COMPL 38
#define DOT 39
#define PLUS 40
#define MINUS 41
#define TIMES 42
#define DIVIDE 43
#define MOD 44
#define RSHIFT 45
#define LSHIFT 46
#define AND 47
#define NAND 55
#define OR 48
#define EXOR 49
#define ARROW 50
#define ITOF 51
#define FTOI 52
#define LOGAND 53
#define LOGOR 54
#define FTOL 56
#define LTOF 57
#define ITOL 58
#define LTOI 59
#define EQUAL 60
#define NEQUAL 61
#define LESSEQ 62
#define LESS 63
#define GREATEQ 64
#define GREAT 65
#define LESSEQP 66
#define LESSP 67
#define GREATQP 68
#define GREATP 69
#define ASPLUS 70
#define ASMINUS 71
#define ASTIMES 72
#define ASDIV 73
#define ASMOD 74
#define ASRSH 75
#define ASLSH 76
#define ASSAND 77
#define ASOR 78
#define ASXOR 79
#define ASSIGN 80
#define TAND 81
#define LTIMES 82
#define LDIV 83
#define LMOD 84
#define ASSNAND 85
#define LASTIMES 86
#define LASDIV 87
#define LASMOD 88
#define QUEST 90
#define LLSHIFT 91
#define ASLSHL 92
#define CALL1 98
#define CALL2 99
#define CALL 100
#define MCALL 101
#define JUMP 102
#define CBRANCH 103
#define INIT 104
#define SETREG 105
#define LOAD 106
#define RFORCE 110
/*
* Intermediate code operators
*/
#define BRANCH 111
#define LABEL 112
#define NLABEL 113
#define RLABEL 114
#define BDATA 200
#define WDATA 201
#define PROG 202
#define DATA 203
#define BSS 204
#define CSPACE 205
#define SSPACE 206
#define SYMDEF 207
#define SAVE 208
#define RETRN 209
#define EVEN 210
#define PROFIL 212
#define SWIT 213
#define EXPR 214
#define SNAME 215
#define RNAME 216
#define ANAME 217
#define NULL 218
/*
* types
*/
#define INT 0
#define CHAR 1
#define FLOAT 2
#define DOUBLE 3
#define STRUCT 4
#define RSTRUCT 5
#define LONG 6
#define TYLEN 2
#define TYPE 07
#define XTYPE (03<<3)
#define PTR 010
#define FUNC 020
#define ARRAY 030
/*
storage classes
*/
#define KEYWC 1
#define MOS 10
#define AUTO 11
#define EXTERN 12
#define STATIC 13
#define REG 14
#define STRTAG 15
#define ARG 16
#define OFFS 20
#define XOFFS 21
#define SOFFS 22
/*
Flag bits
*/
#define BINARY 01
#define LVALUE 02
#define RELAT 04
#define ASSGOP 010
#define LWORD 020
#define RWORD 040
#define COMMUTE 0100
#define RASSOC 0200
#define LEAF 0400
#define CNVRT 01000