66 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* $Header$ */
 | |
| /*
 | |
|  * (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.)
 | |
| 	 				 */
 |