/* $Id$ */ /* * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands. * See the copyright notice in the ACK home directory, in the file "Copyright". */ /* I N P U T R O U T I N E S */ extern FILE *curinp; /* current input file */ extern block_id lastbid; /* block identifying number */ extern lab_id lastlabid; /* last label identifier */ #define getbyte() getc(curinp) extern short getshort(); /* () * Read a short from curinp */ extern offset getoff(); /* () * Read an offset from curinp */ extern line_p read_line(); /* ( proc_p *p_out) * Read a line of EM code (i.e. one * instruction) and its arguments * (if any). If the instruction is a * 'pro' pseudo, set p_out. */ extern line_p getlines(); /* ( FILE *lf; int n; proc_p *p_out; * bool collect_mes) * Read n lines of EM text and doubly * link them. Also process messages * if required. */ extern bblock_p freshblock(); /* () * Allocate a bblock struct and assign * it a brand new block_id. */ extern lab_id freshlabel(); /* () * Get a brand new lab_id. */ extern dblock_p getdtable(); /* (char *dname) * Read the data block table from * the file with the given name. */ extern proc_p getptable(); /* (char *pname) * Read the proc table from * the file with the given name. */ extern bool getunit(); /* (FILE *gf,*lf; short kind_out; * bblock_p g_out; line_p l_out; * proc_p *p_out; bool collect_mes) * Read the control flow graph * (from file gf) and the EM text * (from lf). If collect_mes is TRUE, * all register messages will be * collected and put in the global * variable 'mesregs'. The proc read * is returned in p_out. */ extern message(); /* (line_p lnp) * See if lnp is some useful message. * (e.g. a message telling that a * certain local variable will never be * referenced indirectly, so it may be * put in a register. * If so, add it to the mesregs set.) */