12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /*
- * (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 <ansi.h>
- 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__ */
|