extern char em_flag[];
+#define flags(pp) (em_flag[(pp)->em_opcode - sp_fmnem] & EM_PAR)
+
struct e_instr *
C_alloc()
{
switch(p->em_type) {
case EM_MNEM:
OP(p->em_opcode);
- if (em_flag[p->em_opcode - sp_fmnem] == PAR_B &&
- p->em_argtype == cst_ptyp) {
+ if (flags(p) == PAR_B && p->em_argtype == cst_ptyp) {
p->em_ilb = p->em_cst;
p->em_argtype = ilb_ptyp;
}
- if (em_flag[p->em_opcode - sp_fmnem] != PAR_NO) arg(p, 0);
+ if (flags(p) != PAR_NO) arg(p, 0);
NL();
break;
switch(p->em_argtype) {
case 0:
- if (p->em_type == EM_MNEM && em_flag[p->em_opcode - sp_fmnem] != PAR_W) {
+ if (p->em_type == EM_MNEM && flags(p) != PAR_W) {
abort();
}
CCEND();
-sh -c 'if test -s em_code.3 ; then : ; else cp em_code.3X em_code.3 ; fi '
libeme.a: e/em_private.h e/em.c $(OBS) io.c
- EMHOME=$(EMHOME); cc="$(CC)"; cflags="-c -Ie $(CFLAGS)" ar="$(AR)"; export EMHOME cc ar cflags; sh make.sh e
+ EMHOME=$(EMHOME); cc="$(CC)"; cflags="-c -Ie $(CFLAGS)" ar="$(AR)"; export EMHOME cc ar cflags; sh -x make.sh e
-sh -c 'ranlib libeme.a'
libemk.a: k/em_private.h k/em.c $(OBS) io.c
- EMHOME=$(EMHOME); cc="$(CC)"; cflags="-c -Ik $(CFLAGS)" ar="$(AR)"; export EMHOME cc ar cflags; sh make.sh k
+ EMHOME=$(EMHOME); cc="$(CC)"; cflags="-c -Ik $(CFLAGS)" ar="$(AR)"; export EMHOME cc ar cflags; sh -x make.sh k
-sh -c 'ranlib libemk.a'
em_codeEK.h: make.em.gen $(ETC)/em_table em.nogen
C_flush();
if (nb != curr_pos) {
- if (sys_seek(tfr, nb, 0, &curr_pos) == 0) {
+ if (sys_seek(C_tfr, nb, 0, &curr_pos) == 0) {
C_failed();
}
}
- if (! ibuf) {
- ibuf = Malloc(BUFSIZ);
+ if (! C_ibuf) {
+ C_ibuf = Malloc(BUFSIZ);
}
- if (sys_read(tfr, ibuf, BUFSIZ, &n) == 0) {
+ if (sys_read(C_tfr, C_ibuf, BUFSIZ, &n) == 0) {
C_failed();
}
curr_pos += n;
start_core = nb;
}
- return ibuf[(int) (b - start_core)];
+ return C_ibuf[(int) (b - start_core)];
}
#endif
while (pp) {
if (pp->pp_type == INSERT) {
- C_outpart(pp->pp_id);
+ (*C_outpart)(pp->pp_id);
}
else {
/* copy the chunk to output */
}
static
-switchtotmp()
+swttmp()
{
#ifndef INCORE
if (C_tmpfile == 0) {
strcpy(p, C_tmpdir);
strcat(p, "/CodeXXXXXX");
- tmpfile = mktemp(p);
+ C_tmpfile = mktemp(p);
if (! sys_open(p, OP_WRITE, &C_old_ofp)) {
C_failed();
}
}
static
-switchtoout()
+swtout()
{
#ifndef INCORE
if (C_ontmpfile) {
*/
register PartOfPart *pp = (PartOfPart *) Malloc(sizeof(PartOfPart));
- switchtotmp();
+ swttmp();
C_curr_part = p;
pp->pp_next = p->p_parts;
p->p_parts = pp;
register PartOfPart *pp;
C_outpart = outpart;
- C_switchtotmp = switchtotmp;
- C_switchtoout = switchtoout;
+ C_swttmp = swttmp;
+ C_swtout = swtout;
if (C_sequential && available(part)) {
outpart(part);
return;
register Part *p = mkpart(part);
C_outpart = outpart;
- C_switchtotmp = switchtotmp;
- C_switchtoout = switchtoout;
+ C_swttmp = swttmp;
+ C_swtout = swtout;
end_partofpart(C_curr_part);
if (p->p_prevpart) resume(p->p_prevpart);
else {
C_curr_part = 0;
- switchtoout();
+ swtout();
}
}
*/
#include <system.h>
+#include <local.h>
+#if BIGMACHINE
#define INCORE /* mechanism implemented incore */
+#endif
typedef struct partofpart {
struct partofpart *pp_next;
extern char *C_opp;
#define C_BASE 0
#endif
-extern int (*C_outpart)(), (*C_switchtoout)(), (*C_switchtotmp)();
+extern int (*C_outpart)(), (*C_swtout)(), (*C_swttmp)();
extern File *C_ofp;
#ifndef INCORE
extern File *C_tfr, *C_old_ofp;
extern char *C_tmpfile;
+extern char *C_tmpdir;
#endif
extern char *C_top;
extern char *C_old_top;
extern char *C_old_opp;
+extern char *C_ibuf;
#define put(c) if (C_opp == C_top) C_flush(); *C_opp++ = (c)
#include <alloc.h>
#include <em_path.h>
#include <em_arith.h>
-#include <local.h>
#include "insert.h"
int C_ontmpfile = 0;
Part *C_curr_part;
Part *C_stable[TABSIZ];
char *C_tmpdir = TMP_DIR;
-int (*C_outpart)(), (*C_switchtoout)(), (*C_switchtotmp)();
+int (*C_outpart)(), (*C_swtout)(), (*C_swttmp)();
#ifdef INCORE
char *C_BASE;
File *C_tfr, *C_old_ofp;
char *C_tmpfile;
char *strcpy(), *strcat(), *mktemp();
-static char *ibuf = 0;
+char *C_ibuf = 0;
long C_current_out;
#endif
char *C_old_opp;
#ifdef INCORE
char *C_current_out = obuf;
+#else
+char *C_opp = obuf;
#endif
C_flush() {
#ifndef INCORE
C_flush();
- if (tmpfile) {
- (*C_switchtotmp)();
+ if (C_tmpfile) {
+ (*C_swttmp)();
sys_close(C_ofp);
#else
if (C_BASE) {
if (C_curr_part) {
C_curr_part->p_parts->pp_end = C_current_out - C_BASE;
}
- (*C_switchtoout)();
+ (*C_swtout)();
if (! C_sequential) {
(*C_outpart)(0);
}
#ifndef INCORE
sys_close(C_tfr);
- sys_remove(tmpfile);
- if (ibuf) free(ibuf);
+ sys_remove(C_tmpfile);
+ if (C_ibuf) free(C_ibuf);
#else
free(C_BASE);
#endif
#include "em_private.h"
CC_msstart(cst)
- arith cst;
+ int cst;
{
/* start of message
*/
PS(ps_mes);
- CST(cst);
+ CST((arith)cst);
}