/* * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands. * See the copyright notice in the ACK home directory, in the file "Copyright". */ /* $Id$ */ #ifndef __EMCOMP_INCLUDED__ #define __EMCOMP_INCLUDED__ #include struct e_arg { int ema_argtype; /* type of this argument */ union e_simple_arg { arith emu_cst; /* a cst */ label emu_dlb; /* a numeric data label */ label emu_ilb; /* an instruction label */ char *emu_dnam; /* a data label */ char *emu_pnam; /* a procedure name */ char *emu_string; /* a string (fcon,icon,ucon,scon) */ } ema_arg; arith ema_szoroff; }; #define ema_cst ema_arg.emu_cst #define ema_dlb ema_arg.emu_dlb #define ema_ilb ema_arg.emu_ilb #define ema_dnam ema_arg.emu_dnam #define ema_pnam ema_arg.emu_pnam #define ema_nlocals ema_szoroff #define ema_string ema_arg.emu_string struct e_instr { int em_type; /* Type of this instr */ #define EM_MNEM 256 /* A machine instruction */ #define EM_PSEU 257 /* A pseudo */ #define EM_STARTMES 258 /* Start of a MES pseudo */ #define EM_MESARG 259 /* A member in a MES list */ #define EM_ENDMES 260 /* End of a MES pseudo */ #define EM_DEFILB 261 /* An instruction label definition */ #define EM_DEFDLB 262 /* A numeric data label definition */ #define EM_DEFDNAM 263 /* A non-numeric data label def */ #define EM_ERROR 264 /* Recoverable error */ #define EM_FATAL 265 /* Unrecoverable error */ #define EM_EOF 266 /* End of file */ int em_opcode; struct e_arg em_arg; }; _PROTOTYPE(int EM_open, (char *)); _PROTOTYPE(void EM_close, (void)); _PROTOTYPE(int EM_getinstr, (struct e_instr *)); _PROTOTYPE(int EM_mkcalls, (struct e_instr *)); extern arith EM_holsize; #define EM_bsssize EM_holsize extern int EM_holinit; #define EM_bssinit EM_holinit #define em_ilb em_arg.ema_ilb #define em_dlb em_arg.ema_dlb #define em_dnam em_arg.ema_dnam #define em_argtype em_arg.ema_argtype #define em_cst em_arg.ema_cst #define em_pnam em_arg.ema_pnam #define em_nlocals em_arg.ema_nlocals #define em_string em_arg.ema_string #define em_off em_arg.ema_szoroff #define em_size em_arg.ema_szoroff /* Arguments for EXC pseudo: */ #define em_exc1 em_arg.ema_cst #define em_exc2 em_arg.ema_szoroff extern char *EM_error, *EM_filename; extern unsigned int EM_lineno; extern int EM_wordsize, EM_pointersize; #endif /* __EMCOMP_INCLUDED__ */