12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #include "debug.h"
- #include <em.h>
- #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);
- }
|