7 #include <em_private.h>
9 /* $Id: C_out.c,v 1.9 1994/06/24 11:09:15 ceriel Exp $ */
14 extern char em_flag[];
17 #define flags(pp) (em_flag[(pp)->em_opcode - sp_fmnem] & EM_PAR)
22 static struct e_instr b;
29 register struct e_instr *p;
31 /* Generate EM-code from the e_instr structure "p"
37 if (flags(p) == PAR_B && p->em_argtype == cst_ptyp) {
38 p->em_ilb = p->em_cst;
39 p->em_argtype = ilb_ptyp;
41 if (flags(p) != PAR_NO) arg(p, 0);
78 C_error = "Illegal EM line";
86 register struct e_instr *p;
88 /* Output the argument of "p".
93 switch(p->em_argtype) {
95 if (p->em_type == EM_MNEM && flags(p) != PAR_W) {
102 if (p->em_type == EM_MNEM) {
111 DOFF(p->em_dlb, p->em_off);
115 NOFF(p->em_dnam, p->em_off);
127 SCON(p->em_string, p->em_size);
131 WCON(sp_icon, p->em_string, p->em_size);
135 WCON(sp_ucon, p->em_string, p->em_size);
139 WCON(sp_fcon, p->em_string, p->em_size);
149 register struct e_instr *p;
154 switch(p->em_opcode) {
171 CST((arith) EM_bssinit);
178 CST((arith) EM_holinit);
184 if (p->em_nlocals != -1) CST(p->em_nlocals);
189 if (p->em_argtype == 0) CCEND();