ack/util/ass/assex.h
2019-03-17 22:46:32 +08:00

248 lines
6 KiB
C

/*
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
* See the copyright notice in the ACK home directory, in the file "Copyright".
*/
/*
* global data
*/
#include <stdio.h>
extern int wordsize;
extern int ptrsize;
extern cons_t maxadr;
extern cons_t maxint;
extern cons_t maxdint;
extern cons_t maxunsig;
extern cons_t maxdunsig;
/*
* tables loaded from em_libraries
*/
extern char em_flag[];
/*
The structure containing used for procedure environment stacking
*/
extern stat_t pstate ;
/*
* pointers to not yet allocated storage
*/
extern glob_t *mglobs;
extern glob_t *xglobs;
extern proc_t *mprocs;
extern proc_t *xprocs;
extern ptab_t *proctab;
extern FILE *ifile;
extern FILE *tfile;
extern FILE *dfile;
extern FILE *rtfile;
extern FILE *rdfile;
extern char string[];
/*
* some other pointers
*/
extern glob_t *lastglosym;
extern glob_t *curglosym;
extern siz_t *oursize;
extern relc_t *f_data;
extern relc_t *l_data;
extern relc_t *f_text;
extern relc_t *l_text;
/*
* some indices
*/
extern int strlngth;
extern FOFFSET inpoff;
extern FOFFSET libeof;
/*
* some other counters
*/
extern int procnum;
extern cons_t prog_size;
extern int max_bytes;
extern int pass;
extern int line_num;
extern int nerrors;
extern cons_t textbytes;
extern cons_t databytes;
extern FOFFSET dataoff;
extern FOFFSET textoff;
extern FOFFSET lastoff;
extern int datamode;
extern int datablocks;
extern relc_t *lastheader;
extern cons_t holbase;
extern cons_t holsize;
extern int unresolved;
extern int sourcelines;
extern int intflags;
/*
* some flags
*/
extern int archmode;
extern int procflag;
#ifdef DUMP
extern int c_flag;
extern char opcnt1[];
extern char opcnt2[];
extern char opcnt3[];
#endif
extern int d_flag;
extern int r_flag;
#ifdef JOHAN
extern int jflag;
#endif
extern int wflag;
extern int Uflag;
extern int eof_seen;
extern int mod_sizes;
/*
* miscellaneous
*/
extern cons_t consiz;
extern char *progname;
extern char *curfile;
extern char *eout;
extern arch_t archhdr;
extern siz_t sizes[];
extern char linesize[];
/*
* from asstb.c
*/
extern char *opindex[] ;
extern char opchoice[] ;
extern int maxinsl ;
/* Generate temporary filename. Fatal error in case of error. */
extern char *tmpfil(void);
/* Read next byte from "af" file, fatal error if there isn't one. */
extern int xgetc(register FILE *af);
/* Read a value of length "l" bytes from file "f",
* fatal error if cannot be read.
*/
extern cons_t xgetarb(int l,FILE *f);
/* Read the pointer constant a from file "f".
* NOTE: The bytes were written low to high (little-endian).
*/
extern cons_t xgeta(FILE* f);
/* Output one byte into file "af" and fatal error if it gives an error */
extern void xputc(int c,register FILE *af);
/* Output a 16-bit value into file "f" in little-endian, fatal error if it gives an error. */
extern void xput16(int w,FILE *f);
/* Output a value of "l" bytes into file "f" and fatal error if it gives an error. */
extern void xputarb(int l,cons_t w, FILE* f);
/* Assemble the pointer constant a into file "f".
* NOTE: The bytes are written low to high (little-endian).
*/
extern void xputa(cons_t a,FILE* f);
/* Write a byte value into the code temporary file. */
extern void put8(int n);
/* Write a 16-bit value into the code temporary file. */
extern void put16(int n);
/* Write a 32-bit value into the code temporary file. */
extern void put32(cons_t n);
/* Write a 64-bit value into the code temporary file. */
extern void put64(cons_t n);
/* Read a byte from the input file, return EOF upon error of EOF */
extern int xget8(void);
/* Read a byte from the input file, fatal error upon error or EOF. */
extern unsigned int get8(void);
/* Read a signed 16-bit value from the input file. Raise
* a fatal error upon error or end of stream.
*/
extern int get16(void);
/* Read an unsigned 16-bit value from the input file. Raise
* a fatal error upon error or end of stream.
*/
extern int getu16(void);
/* Read a 32-bit value from the input file. Raise
* a fatal error upon error or end of stream.
*/
extern cons_t get32(void);
/* Write a byte to the data file. */
extern void ext8(int b);
/* Write a 16-bit value to the data file.
* The value is written from low to high (little-endian)
*/
extern void extword(cons_t w);
/* Write "value" of "size" bytes to the data file. The bytes
* are written low to high.
*/
extern void extarb(int size, long value);
/* Write pointer "a". The bytes are
* written from low to high to the data file.
*/
extern void extadr(cons_t a);
/* Returns the opcode length in bytes */
extern int oplength(int);
extern void genop(char *,cons_t,int );
extern void putblk(register FILE *stream,register char *from, register int amount);
extern int getblk(register FILE *stream, register char *from, register int amount);
extern void set_mode(int mode);
/* Dump current information to screen if dump flag is enabled. */
void dump(int n);
/*
extern char *findnop();
extern char *findfit();
*/
extern glob_t *glolookup(char *name,int status,glob_t *table, int size);
extern proc_t *searchproc(char *name,proc_t *table,int size);
extern glob_t *glo2lookup(char *name ,int status);
extern glob_t *xglolookup(char *name,int status);
extern proc_t *prolookup(char *name,int status);
extern locl_t *loclookup(unsigned int an,int status);
extern proc_t *enterproc(char *name,int status,proc_t *place);
extern cons_t parval(line_t *lnp,char *defined);
extern void determine_props(line_t *lnp, int *min_len, int *max_len);
extern int opfit(int flag,int number,cons_t val,int i_flag);
extern void initproc(void);
extern void endproc(void);
extern void init_files(void);
extern void init_module(void);
extern void end_module(void);
extern void do_proc(void);
extern void ertrap(void);
extern void init_vars(void);
extern void error(const char* string1, ...);
extern void werror(const char* string1, ...);
extern void fatal(char *s);