#include "debug.h" #include #include "LLlex.h" #include "def.h" #include "main.h" #include "scope.h" #include "type.h" static int extflc; /* number of external files */ static int inpflag = 0; /* input mentioned in heading ? */ static int outpflag = 0; /* output mentioned in heading ? */ static label extfl_label; /* label of array of file pointers */ set_inp() { inpflag = 1; } set_outp() { outpflag = 1; } make_extfl() { register struct def *df; extfl_label = ++data_label; C_df_dlb(extfl_label); if( inpflag ) C_con_dnam(input, (arith) 0); else C_con_ucon("0", pointer_size); if( outpflag ) C_con_dnam(output, (arith) 0); else C_con_ucon("0", pointer_size); extflc = 2; for( df = GlobalScope->sc_def; df; df = df->df_nextinscope ) if( (df->df_flags & D_PROGPAR) && df->var_name != input && df->var_name != output) { C_con_dnam(df->var_name, (arith) 0); extflc++; } } call_ini() { C_lxl((arith) 0); C_lae_dlb(extfl_label, (arith) 0); C_loc((arith) extflc); C_lxa((arith) 0); C_cal("_ini"); C_asp(3 * pointer_size + word_size); }