⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 acid.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
/* acid.h */enum{	Eof		= -1,	Strsize		= 4096,	Hashsize	= 128,	Maxarg		= 512,	NFD		= 100,	Maxproc		= 50,	Maxval		= 10,	Mempergc	= 1024*1024,};#pragma varargck type "L"	voidtypedef struct Node	Node;typedef struct String	String;typedef struct Lsym	Lsym;typedef struct List	List;typedef struct Store	Store;typedef struct Gc	Gc;typedef struct Strc	Strc;typedef struct Rplace	Rplace;typedef struct Ptab	Ptab;typedef struct Value	Value;typedef struct Type	Type;typedef struct Frtype	Frtype;Extern int	kernel;Extern int	remote;Extern int	text;Extern int	silent;Extern Fhdr	fhdr;Extern int	line;Extern Biobuf*	bout;Extern Biobuf*	io[32];Extern int	iop;Extern char	symbol[Strsize];Extern int	interactive;Extern int	na;Extern int	wtflag;Extern Map*	cormap;Extern Map*	symmap;Extern Lsym*	hash[Hashsize];Extern long	dogc;Extern Rplace*	ret;Extern char*	aout;Extern int	gotint;Extern Gc*	gcl;Extern int	stacked;Extern jmp_buf	err;Extern Node*	prnt;Extern List*	tracelist;Extern int	initialising;Extern int	quiet;extern void	(*expop[])(Node*, Node*);#define expr(n, r) (r)->comt=0; (*expop[(n)->op])(n, r);enum{	TINT,	TFLOAT,	TSTRING,	TLIST,	TCODE,};struct Type{	Type*	next;	int	offset;	char	fmt;	char	depth;	Lsym*	type;	Lsym*	tag;	Lsym*	base;};struct Frtype{	Lsym*	var;	Type*	type;	Frtype*	next;};struct Ptab{	int	pid;	int	ctl;};Extern Ptab	ptab[Maxproc];struct Rplace{	jmp_buf	rlab;	Node*	stak;	Node*	val;	Lsym*	local;	Lsym**	tail;};struct Gc{	char	gcmark;	Gc*	gclink;};struct Store{	char	fmt;	Type*	comt;	union {		vlong	ival;		double	fval;		String*	string;		List*	l;		Node*	cc;	};};struct List{	Gc;	List*	next;	char	type;	Store;};struct Value{	char	set;	char	type;	Store;	Value*	pop;	Lsym*	scope;	Rplace*	ret;};struct Lsym{	char*	name;	int	lexval;	Lsym*	hash;	Value*	v;	Type*	lt;	Node*	proc;	Frtype*	local;	void	(*builtin)(Node*, Node*);};struct Node{	Gc;	char	op;	char	type;	Node*	left;	Node*	right;	Lsym*	sym;	int	builtin;	Store;};#define ZN	(Node*)0struct String{	Gc;	char	*string;	int	len;};List*	addlist(List*, List*);List*	al(int);Node*	an(int, Node*, Node*);void	append(Node*, Node*, Node*);int	bool(Node*);void	build(Node*);void	call(char*, Node*, Node*, Node*, Node*);void	catcher(void*, char*);void	checkqid(int, int);void	cmd(void);Node*	con(vlong);List*	construct(Node*);void	ctrace(int);void	decl(Node*);void	defcomplex(Node*, Node*);void	deinstall(int);void	delete(List*, int n, Node*);void	dostop(int);Lsym*	enter(char*, int);void	error(char*, ...);void	execute(Node*);void	fatal(char*, ...);void	flatten(Node**, Node*);void	gc(void);char*	getstatus(int);void*	gmalloc(long);void	indir(Map*, uvlong, char, Node*);void	installbuiltin(void);void	kinit(void);int	Lfmt(Fmt*);int	listcmp(List*, List*);int	listlen(List*);List*	listvar(char*, vlong);void	loadmodule(char*);void	loadvars(void);Lsym*	look(char*);void	ltag(char*);void	marklist(List*);Lsym*	mkvar(char*);void	msg(int, char*);void	notes(int);int	nproc(char**);void	nthelem(List*, int, Node*);int	numsym(char);void	odot(Node*, Node*);void	pcode(Node*, int);void	pexpr(Node*);int	popio(void);void	pstr(String*);void	pushfile(char*);void	pushstr(Node*);void	readtext(char*);void	restartio(void);uvlong	rget(Map*, char*);String	*runenode(Rune*);int	scmp(String*, String*);void	sproc(int);String*	stradd(String*, String*);String*	straddrune(String*, Rune);String*	strnode(char*);String*	strnodlen(char*, int);char*	system(void);void	trlist(Map*, uvlong, uvlong, Symbol*);void	unwind(void);void	userinit(void);void	varreg(void);void	varsym(void);Waitmsg*	waitfor(int);void	whatis(Lsym*);void	windir(Map*, Node*, Node*, Node*);void	yyerror(char*, ...);int	yylex(void);int	yyparse(void);enum{	ONAME,	OCONST,	OMUL,	ODIV,	OMOD,	OADD,	OSUB,	ORSH,	OLSH,	OLT,	OGT,	OLEQ,	OGEQ,	OEQ,	ONEQ,	OLAND,	OXOR,	OLOR,	OCAND,	OCOR,	OASGN,	OINDM,	OEDEC,	OEINC,	OPINC,	OPDEC,	ONOT,	OIF,	ODO,	OLIST,	OCALL,	OCTRUCT,	OWHILE,	OELSE,	OHEAD,	OTAIL,	OAPPEND,	ORET,	OINDEX,	OINDC,	ODOT,	OLOCAL,	OFRAME,	OCOMPLEX,	ODELETE,	OCAST,	OFMT,	OEVAL,	OWHAT,};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -