ref: ed874de117ff9d2eea35b69cd6a2fcb61f521c1a
dir: /as/as.h/
enum secflags { SRELOC, SREAD, SWRITE, SFILE, }; enum symflags { FUNDEF = 'U', FABS = 'A', FCOMMON = 'C', FBSS = 'B', FDATA = 'D', }; enum args { AIMM = 1, AMAX, AREP = 1 << 7, }; enum endianess { BIG_ENDIAN = -1, LITTLE_ENDIAN = 1 }; typedef struct ins Ins; typedef struct op Op; typedef struct arg Arg; typedef void Format(Op *, Arg *); typedef struct section Section; typedef struct symbol Symbol; struct line { char *label; char *op; char *args; }; struct ins { int begin, end; char *str; }; struct op { int flags; int size; void (*format)(Op *, Arg *); char *bytes; unsigned char *args; }; struct arg { unsigned char type; TUINT val; }; struct section { char *name; char *mem; int flags; TUINT base; TUINT max; TUINT curpc; TUINT pc; struct section *next; }; struct symbol { char *name; char type; short desc; TUINT value; struct symbol *next; }; extern void isections(void); extern void writeout(char *name); extern void emit(Section *sec, char *bytes, int nbytes); extern Section *section(char *name); extern void incpc(int siz); extern char *pack(TUINT v, int n, int inc); extern void error(char *msg, ...); extern Arg *getargs(char *s); extern Symbol *lookup(char *name); /* Avoid errors in files where stdio is not included */ #ifdef stdin extern int next(FILE *fp, struct line *linep); #endif extern Section *cursec; extern int nr_ins; extern Ins instab[]; extern Op optab[]; extern int pass; extern TUINT maxaddr; extern int endian;