1994-06-24 11:31:16 +00:00
|
|
|
/* $Id$ */
|
1987-03-09 19:15:41 +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".
|
|
|
|
*/
|
1984-11-26 13:43:22 +00:00
|
|
|
/* I N T E R M E D I A T E C O D E
|
|
|
|
*
|
|
|
|
* A U X I L I A R Y R O U T I N E S
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
2019-10-31 22:05:22 +00:00
|
|
|
offset opr_size(short instr); /*
|
1984-11-26 13:43:22 +00:00
|
|
|
* size of operand of given instruction.
|
|
|
|
* The operand is an object , so the
|
|
|
|
* instruction can be loe, zre etc..
|
|
|
|
*/
|
2019-10-31 22:05:22 +00:00
|
|
|
void dblockdef(dblock_p db, int n, line_p lnp);
|
|
|
|
/*
|
1984-11-26 13:43:22 +00:00
|
|
|
* Fill in d_pseudo, d_size and
|
|
|
|
* d_values fields of db.
|
|
|
|
*/
|
2019-10-31 22:05:22 +00:00
|
|
|
void combine(dblock_p db, line_p l1, line_p l2, byte pseu);
|
|
|
|
/*
|
1984-11-26 13:43:22 +00:00
|
|
|
* Combine two successive ROMs or CONs
|
|
|
|
* (with no data label in between)
|
|
|
|
* into one ROM or CON.
|
|
|
|
*/
|
2019-10-31 22:05:22 +00:00
|
|
|
line_p arglist(int m); /*
|
1984-11-26 13:43:22 +00:00
|
|
|
* Read a list of m arguments. If m
|
|
|
|
* is 0, then the list is of
|
|
|
|
* undetermined length; it is
|
|
|
|
* then terminated by a cend symbol.
|
|
|
|
*/
|
2019-10-31 22:05:22 +00:00
|
|
|
bool is_datalabel(line_p l); /*
|
1984-11-26 13:43:22 +00:00
|
|
|
* TRUE if l is a data label defining
|
|
|
|
* occurrence (i.e. its l_instr
|
|
|
|
* field is ps_sym).
|
|
|
|
*/
|
2019-10-31 22:05:22 +00:00
|
|
|
dblock_p block_of_lab(char *ident); /*
|
1984-11-26 13:43:22 +00:00
|
|
|
* Find the datablock with
|
|
|
|
* the given name.
|
|
|
|
*/
|
2019-10-31 22:05:22 +00:00
|
|
|
obj_p object(char *ident, offset off, offset size);
|
|
|
|
/*
|
1984-11-26 13:43:22 +00:00
|
|
|
* Create an object struct.
|
|
|
|
*/
|