ack/modules/src/read_em/em_comp.h

70 lines
2.4 KiB
C
Raw Normal View History

1987-03-09 15:15:03 +00:00
/*
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
* See the copyright notice in the ACK home directory, in the file "Copyright".
*/
1987-01-06 11:05:35 +00:00
/* $Header$ */
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 */
union {
struct {
int emus_opcode; /* Opcode of instruction */
struct e_args *emus_args; /* Arguments of instruction */
} emu_mp;
label emu_deflb; /* Numeric label definition */
char *emu_defdnam; /* Non-numeric label definition */
struct e_args *emu_arg; /* For an argument */
} em_i;
#define em_opcode em_i.emu_mp.emus_opcode
#define em_args em_i.emu_mp.emus_args
#define em_deflb em_i.emu_deflb
#define em_defdnam em_i.emu_defdnam
#define em_arg em_i.emu_arg
};
struct e_args {
struct e_args *em_next; /* Next argument */
short em_argtype; /* Type of this argument */
union {
arith emu_cst; /* A constant */
label emu_ilb; /* An instruction label */
char *emu_pnam; /* A procedure name (not including '$') */
struct {
label emus_dlb;
arith emus_noff;
} emu_ndlb; /* Numeric data label + offset */
struct {
char *emus_dnam;
arith emus_soff;
} emu_sdlb; /* String data label + offset */
struct {
char *emus_str;
arith emus_size;
} emu_con; /* An scon, icon, ucon or fcon */
} em_value;
#define em_cst em_value.emu_cst
#define em_ilb em_value.emu_ilb
#define em_pnam em_value.emu_pnam
#define em_dlb em_value.emu_ndlb.emus_dlb
#define em_noff em_value.emu_ndlb.emus_noff
#define em_dnam em_value.emu_sdlb.emus_dnam
#define em_soff em_value.emu_sdlb.emus_soff
#define em_str em_value.emu_con.emus_str
#define em_size em_value.emu_con.emus_size
};
extern char *EM_error;
extern unsigned int EM_lineno;
extern char *EM_filename;
1987-01-23 16:15:57 +00:00
extern int EM_wordsize, EM_pointersize;