71 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* TYDELYK !!!!!! */
 | |
| 
 | |
| #include	"debug.h"
 | |
| 
 | |
| #include	<assert.h>
 | |
| #include	<em.h>
 | |
| 
 | |
| #include	"LLlex.h"
 | |
| #include	"def.h"
 | |
| #include	"main.h"
 | |
| #include	"scope.h"
 | |
| #include	"type.h"
 | |
| 
 | |
| arith cnt = 2;			/* standaard input & output */
 | |
| int inpflag = 0;		/* std input gedefinieerd of niet */
 | |
| int outpflag = 0;		/* std output gedefinieerd of niet */
 | |
| label con_label;
 | |
| 
 | |
| set_inp()
 | |
| {
 | |
| 	inpflag = 1;
 | |
| }
 | |
| 
 | |
| set_outp()
 | |
| {
 | |
| 	outpflag = 1;
 | |
| }
 | |
| 
 | |
| set_prog(df)
 | |
| 	struct def *df;
 | |
| {
 | |
| 	cnt++;
 | |
| 	df->df_flags |= 0x40;
 | |
| }
 | |
| 
 | |
| make_con()
 | |
| {
 | |
| 	register struct def *df;
 | |
| 
 | |
| 	con_label = ++data_label;
 | |
| 	C_df_dlb(con_label);
 | |
| 	C_con_cst(cnt);
 | |
| 
 | |
| 	if( inpflag )
 | |
| 		C_con_dnam("input", (arith) 0);
 | |
| 	else
 | |
| 		C_con_cst((arith) -1);
 | |
| 
 | |
| 	if( outpflag )
 | |
| 		C_con_dnam("output", (arith) 0);
 | |
| 	else
 | |
| 		C_con_cst((arith) -1);
 | |
| 
 | |
| 	for( df = GlobalScope->sc_def; df; df = df->df_nextinscope )
 | |
| 		if( df->df_flags & 0x40 )	{
 | |
| 			C_con_dnam(df->var_name, (arith) 0);
 | |
| 			cnt--;
 | |
| 		}
 | |
| 
 | |
| 	assert(cnt == 2);
 | |
| }
 | |
| 
 | |
| call_ini()
 | |
| {
 | |
| 	C_lxl((arith) 0);
 | |
| 	C_lae_dlb(con_label, (arith) 0);
 | |
| 	C_zer(pointer_size);
 | |
| 	C_lxa((arith) 0);
 | |
| 	C_cal("_ini");
 | |
| 	C_asp(4 * pointer_size);
 | |
| }
 |