Added some prototyping to stop a compile error with gcc 4.
This commit is contained in:
67
mach/pdp/as/Makefile
Normal file
67
mach/pdp/as/Makefile
Normal file
@@ -0,0 +1,67 @@
|
||||
# $Header$
|
||||
EMHOME = ../../..
|
||||
h = $(EMHOME)/h
|
||||
LIBOBJ = $(EMHOME)/modules/lib/libobject.a
|
||||
CDIR = $(EMHOME)/mach/proto/as
|
||||
CPP = $(EMHOME)/lib/cpp
|
||||
DEF =
|
||||
|
||||
FFLAG =
|
||||
INCL = -I. -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O $(INCL)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG)
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = comm3.o comm4.o comm5.o \
|
||||
comm6.o comm7.o comm8.o
|
||||
MACH = mach0.c mach1.c mach2.c mach3.c mach4.c mach5.c
|
||||
COMM = $(CDIR)/comm0.h $(CDIR)/comm1.h $(CDIR)/comm2.y $(CSRC)
|
||||
|
||||
all: as
|
||||
|
||||
install:all
|
||||
../../install as
|
||||
|
||||
cmp:
|
||||
-../../compare as
|
||||
|
||||
clean:
|
||||
rm -f *.o as as.[cy] y.tab.h
|
||||
|
||||
pr: $(MACH)
|
||||
@pr -n $(MACH)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
as: $(COBJ) as.o
|
||||
$(CC) $(LDFLAGS) $(COBJ) as.o $(LIBOBJ) -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
-@if test -f Expect ; then cat Expect ; else echo "expect 1 shift/reduce conflict"; fi
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
lint $(INCL) $(CSRC) as.c
|
||||
|
||||
y.tab.h: as.c
|
||||
$(COBJ): y.tab.h
|
||||
$(COBJ) as.y: $(CDIR)/comm0.h mach0.c
|
||||
$(COBJ) as.y: $(CDIR)/comm1.h mach1.c
|
||||
as.y: mach2.c
|
||||
comm3.o: mach3.c
|
||||
as.y: mach4.c
|
||||
comm8.o: mach5.c
|
||||
comm3.o: $(CDIR)/comm3.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm3.c
|
||||
comm4.o: $(CDIR)/comm4.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm4.c
|
||||
comm5.o: $(CDIR)/comm5.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm5.c
|
||||
comm6.o: $(CDIR)/comm6.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm6.c
|
||||
comm7.o: $(CDIR)/comm7.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm7.c
|
||||
comm8.o: $(CDIR)/comm8.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/comm8.c
|
||||
184
mach/pdp/cg/Makefile
Normal file
184
mach/pdp/cg/Makefile
Normal file
@@ -0,0 +1,184 @@
|
||||
# $Header$
|
||||
|
||||
EMHOME=../../..
|
||||
PREFLAGS=-I$(EMHOME)/h -I. -I$(EMHOME)/mach -I$(EMHOME)/modules/h -DNDEBUG
|
||||
PFLAGS=
|
||||
CFLAGS=$(PREFLAGS) $(PFLAGS) -O
|
||||
LDFLAGS=$(PFLAGS)
|
||||
LINTOPTS=-hbxac
|
||||
LIBS=$(EMHOME)/lib/em_data.a $(EMHOME)/modules/lib/libflt.a
|
||||
CDIR=$(EMHOME)/mach/proto/cg
|
||||
CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
|
||||
$(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/main.c $(CDIR)/move.c \
|
||||
$(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c $(CDIR)/salloc.c \
|
||||
$(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
|
||||
OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o main.o\
|
||||
move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
|
||||
|
||||
all: tables.c
|
||||
make "EMHOME="$(EMHOME) cg
|
||||
|
||||
cg: tables.o $(OFILES)
|
||||
$(CC) $(LDFLAGS) $(OFILES) tables.o $(LIBS) -o cg
|
||||
|
||||
tables.o: tables.c
|
||||
$(CC) -c $(PREFLAGS) -I$(CDIR) tables.c
|
||||
|
||||
codegen.o: $(CDIR)/codegen.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/codegen.c
|
||||
compute.o: $(CDIR)/compute.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/compute.c
|
||||
equiv.o: $(CDIR)/equiv.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/equiv.c
|
||||
fillem.o: $(CDIR)/fillem.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/fillem.c
|
||||
gencode.o: $(CDIR)/gencode.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/gencode.c
|
||||
glosym.o: $(CDIR)/glosym.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/glosym.c
|
||||
main.o: $(CDIR)/main.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/main.c
|
||||
move.o: $(CDIR)/move.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/move.c
|
||||
nextem.o: $(CDIR)/nextem.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/nextem.c
|
||||
reg.o: $(CDIR)/reg.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/reg.c
|
||||
regvar.o: $(CDIR)/regvar.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/regvar.c
|
||||
salloc.o: $(CDIR)/salloc.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/salloc.c
|
||||
state.o: $(CDIR)/state.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/state.c
|
||||
subr.o: $(CDIR)/subr.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/subr.c
|
||||
var.o: $(CDIR)/var.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/var.c
|
||||
|
||||
install: all
|
||||
../../install cg
|
||||
|
||||
cmp: all
|
||||
-../../compare cg
|
||||
|
||||
distr: tables.c
|
||||
rm -f tables1.[ch]
|
||||
cp tables.c tables1.c
|
||||
cp tables.h tables1.h
|
||||
chmod -w tables1.[ch]
|
||||
|
||||
|
||||
tables.c: table
|
||||
-mv tables.h tables.h.save
|
||||
$(EMHOME)/lib/cpp -P table | $(EMHOME)/lib/cgg > debug.out
|
||||
-if cmp -s tables.h.save tables.h; then mv tables.h.save tables.h; else exit 0; fi
|
||||
-if cmp -s /dev/null tables.h; then mv tables.h.save tables.h; else exit 0; fi
|
||||
|
||||
lint: $(CFILES)
|
||||
lint $(LINTOPTS) $(PREFLAGS) $(CFILES)
|
||||
clean:
|
||||
rm -f *.o tables.c tables.h debug.out cg tables.h.save
|
||||
|
||||
codegen.o: $(CDIR)/assert.h
|
||||
codegen.o: $(CDIR)/data.h
|
||||
codegen.o: $(CDIR)/equiv.h
|
||||
codegen.o: $(CDIR)/extern.h
|
||||
codegen.o: $(CDIR)/param.h
|
||||
codegen.o: $(CDIR)/result.h
|
||||
codegen.o: $(CDIR)/state.h
|
||||
codegen.o: tables.h
|
||||
codegen.o: $(CDIR)/types.h
|
||||
compute.o: $(CDIR)/assert.h
|
||||
compute.o: $(CDIR)/data.h
|
||||
compute.o: $(CDIR)/extern.h
|
||||
compute.o: $(CDIR)/glosym.h
|
||||
compute.o: $(CDIR)/param.h
|
||||
compute.o: $(CDIR)/result.h
|
||||
compute.o: tables.h
|
||||
compute.o: $(CDIR)/types.h
|
||||
equiv.o: $(CDIR)/assert.h
|
||||
equiv.o: $(CDIR)/data.h
|
||||
equiv.o: $(CDIR)/equiv.h
|
||||
equiv.o: $(CDIR)/extern.h
|
||||
equiv.o: $(CDIR)/param.h
|
||||
equiv.o: $(CDIR)/result.h
|
||||
equiv.o: tables.h
|
||||
equiv.o: $(CDIR)/types.h
|
||||
fillem.o: $(CDIR)/assert.h
|
||||
fillem.o: $(CDIR)/data.h
|
||||
fillem.o: $(CDIR)/extern.h
|
||||
fillem.o: mach.c
|
||||
fillem.o: mach.h
|
||||
fillem.o: $(CDIR)/param.h
|
||||
fillem.o: $(CDIR)/regvar.h
|
||||
fillem.o: $(CDIR)/result.h
|
||||
fillem.o: tables.h
|
||||
fillem.o: $(CDIR)/types.h
|
||||
gencode.o: $(CDIR)/assert.h
|
||||
gencode.o: $(CDIR)/data.h
|
||||
gencode.o: $(CDIR)/extern.h
|
||||
gencode.o: $(CDIR)/param.h
|
||||
gencode.o: $(CDIR)/result.h
|
||||
gencode.o: tables.h
|
||||
gencode.o: $(CDIR)/types.h
|
||||
glosym.o: $(CDIR)/glosym.h
|
||||
glosym.o: $(CDIR)/param.h
|
||||
glosym.o: tables.h
|
||||
glosym.o: $(CDIR)/types.h
|
||||
main.o: $(CDIR)/param.h
|
||||
move.o: $(CDIR)/assert.h
|
||||
move.o: $(CDIR)/data.h
|
||||
move.o: $(CDIR)/extern.h
|
||||
move.o: $(CDIR)/param.h
|
||||
move.o: $(CDIR)/result.h
|
||||
move.o: tables.h
|
||||
move.o: $(CDIR)/types.h
|
||||
nextem.o: $(CDIR)/assert.h
|
||||
nextem.o: $(CDIR)/data.h
|
||||
nextem.o: $(CDIR)/extern.h
|
||||
nextem.o: $(CDIR)/param.h
|
||||
nextem.o: $(CDIR)/result.h
|
||||
nextem.o: tables.h
|
||||
nextem.o: $(CDIR)/types.h
|
||||
reg.o: $(CDIR)/assert.h
|
||||
reg.o: $(CDIR)/data.h
|
||||
reg.o: $(CDIR)/extern.h
|
||||
reg.o: $(CDIR)/param.h
|
||||
reg.o: $(CDIR)/result.h
|
||||
reg.o: tables.h
|
||||
reg.o: $(CDIR)/types.h
|
||||
regvar.o: $(CDIR)/assert.h
|
||||
regvar.o: $(CDIR)/data.h
|
||||
regvar.o: $(CDIR)/extern.h
|
||||
regvar.o: $(CDIR)/param.h
|
||||
regvar.o: $(CDIR)/regvar.h
|
||||
regvar.o: $(CDIR)/result.h
|
||||
regvar.o: tables.h
|
||||
regvar.o: $(CDIR)/types.h
|
||||
salloc.o: $(CDIR)/assert.h
|
||||
salloc.o: $(CDIR)/data.h
|
||||
salloc.o: $(CDIR)/extern.h
|
||||
salloc.o: $(CDIR)/param.h
|
||||
salloc.o: $(CDIR)/result.h
|
||||
salloc.o: tables.h
|
||||
salloc.o: $(CDIR)/types.h
|
||||
state.o: $(CDIR)/assert.h
|
||||
state.o: $(CDIR)/data.h
|
||||
state.o: $(CDIR)/extern.h
|
||||
state.o: $(CDIR)/param.h
|
||||
state.o: $(CDIR)/result.h
|
||||
state.o: $(CDIR)/state.h
|
||||
state.o: tables.h
|
||||
state.o: $(CDIR)/types.h
|
||||
subr.o: $(CDIR)/assert.h
|
||||
subr.o: $(CDIR)/data.h
|
||||
subr.o: $(CDIR)/extern.h
|
||||
subr.o: $(CDIR)/param.h
|
||||
subr.o: $(CDIR)/result.h
|
||||
subr.o: tables.h
|
||||
subr.o: $(CDIR)/types.h
|
||||
var.o: $(CDIR)/data.h
|
||||
var.o: $(CDIR)/param.h
|
||||
var.o: $(CDIR)/result.h
|
||||
var.o: tables.h
|
||||
var.o: $(CDIR)/types.h
|
||||
135
mach/pdp/cg/peep.c
Normal file
135
mach/pdp/cg/peep.c
Normal file
@@ -0,0 +1,135 @@
|
||||
#ifndef NORCSID
|
||||
static char rcsid[] = "$Header$";
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/*
|
||||
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||||
*
|
||||
* This product is part of the Amsterdam Compiler Kit.
|
||||
*
|
||||
* Permission to use, sell, duplicate or disclose this software must be
|
||||
* obtained in writing. Requests for such permissions may be sent to
|
||||
*
|
||||
* Dr. Andrew S. Tanenbaum
|
||||
* Wiskundig Seminarium
|
||||
* Vrije Universiteit
|
||||
* Postbox 7161
|
||||
* 1007 MC Amsterdam
|
||||
* The Netherlands
|
||||
*
|
||||
* Author: Hans van Staveren
|
||||
*/
|
||||
|
||||
char buf[512];
|
||||
char *index();
|
||||
|
||||
main() {
|
||||
register n,sa;
|
||||
register char *p;
|
||||
|
||||
sa=0;
|
||||
for (;;) {
|
||||
getline(buf);
|
||||
if (n=stackadjust()) {
|
||||
sa += n;
|
||||
continue;
|
||||
}
|
||||
if (nullinstruction())
|
||||
continue;
|
||||
if (sa) {
|
||||
if (buf[0]=='t' && buf[1]=='s' && buf[2]=='t' && buf[3]==' ') {
|
||||
sa -= 2;
|
||||
buf[0]='m';
|
||||
buf[1]='o';
|
||||
buf[2]='v';
|
||||
strcat(buf,",(sp)+");
|
||||
} else if (buf[0]=='m' && buf[1]=='o' && buf[2]=='v' &&
|
||||
buf[3]==' ' && (p=index(&buf[5],','))!=0 &&
|
||||
p[1]=='-' && p[2]=='(' && p[3]=='s') {
|
||||
sa -= 2;
|
||||
p[1]=' ';
|
||||
}
|
||||
}
|
||||
switch(sa) {
|
||||
case 0:break;
|
||||
case 2:puts("tst (sp)+");sa=0;break;
|
||||
case 4:puts("cmp (sp)+,(sp)+");sa=0;break;
|
||||
case 6:puts("add $06,sp");sa=0;break;
|
||||
}
|
||||
puts(buf);
|
||||
}
|
||||
}
|
||||
|
||||
getline(buf) register char *buf; {
|
||||
register c;
|
||||
|
||||
while ((c=getchar())==' ' || c=='\t')
|
||||
;
|
||||
if (c==EOF)
|
||||
exit(0);
|
||||
do *buf++=c;
|
||||
while ((c=getchar())!='\n');
|
||||
*buf=0;
|
||||
}
|
||||
|
||||
stackadjust() {
|
||||
|
||||
if (buf[0]=='t' &&
|
||||
buf[1]=='s' &&
|
||||
buf[2]=='t' &&
|
||||
buf[3]==' ' &&
|
||||
buf[4]=='(' &&
|
||||
buf[5]=='s' &&
|
||||
buf[6]=='p' &&
|
||||
buf[7]==')' &&
|
||||
buf[8]=='+') return(2);
|
||||
if (buf[0]=='c' &&
|
||||
buf[1]=='m' &&
|
||||
buf[2]=='p' &&
|
||||
buf[3]==' ' &&
|
||||
buf[4]=='(' &&
|
||||
buf[5]=='s' &&
|
||||
buf[6]=='p' &&
|
||||
buf[7]==')' &&
|
||||
buf[8]=='+' &&
|
||||
buf[9]==',' &&
|
||||
buf[10]=='(' &&
|
||||
buf[11]=='s' &&
|
||||
buf[12]=='p' &&
|
||||
buf[13]==')' &&
|
||||
buf[14]=='+') return(4);
|
||||
if (buf[0]=='a' &&
|
||||
buf[1]=='d' &&
|
||||
buf[2]=='d' &&
|
||||
buf[3]==' ' &&
|
||||
buf[4]=='$' &&
|
||||
buf[5]=='0' &&
|
||||
buf[6]=='6' &&
|
||||
buf[7]==',' &&
|
||||
buf[8]=='s' &&
|
||||
buf[9]=='p' &&
|
||||
buf[10]==0) return(6);
|
||||
return(0);
|
||||
}
|
||||
|
||||
nullinstruction() {
|
||||
register char *p;
|
||||
|
||||
if (buf[4]=='$' && buf[5]=='0' && buf[6]=='0' && buf[7]==',') {
|
||||
p=index(buf,'-');
|
||||
if (p!=0 && p[1]=='(')
|
||||
return(0);
|
||||
p=index(buf,'+');
|
||||
if (p!=0 && p[-1]==')')
|
||||
return(0);
|
||||
if (buf[0]=='b' && buf[1]=='i' && (buf[2]=='s' || buf[2]=='c'))
|
||||
return(1);
|
||||
if (buf[0]=='a' && buf[1]=='d' && buf[2]=='d')
|
||||
return(1);
|
||||
if (buf[0]=='s' && buf[1]=='u' && buf[2]=='b')
|
||||
return(1);
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
25
mach/pdp/cv/Makefile
Normal file
25
mach/pdp/cv/Makefile
Normal file
@@ -0,0 +1,25 @@
|
||||
EMHOME = ../../..
|
||||
LIBOBJ = $(EMHOME)/modules/lib/libobject.a
|
||||
INCLUDE = $(EMHOME)/h
|
||||
CFLAGS = -I. -I$(INCLUDE) -O
|
||||
TARGETS = cv
|
||||
|
||||
all: $(TARGETS)
|
||||
|
||||
install: all
|
||||
../../install cv
|
||||
|
||||
cmp: all
|
||||
../../compare cv
|
||||
|
||||
cv: cv.o
|
||||
$(CC) $(LDFLAGS) -o cv cv.o $(LIBOBJ)
|
||||
|
||||
clean:
|
||||
rm -f $(TARGETS) *.o nohup.out Out
|
||||
|
||||
pr:
|
||||
@pr Makefile cv.c
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
51
mach/pdp/int/Makefile
Normal file
51
mach/pdp/int/Makefile
Normal file
@@ -0,0 +1,51 @@
|
||||
INTS=em_t--- em_---- em_tf-- em_t-c- em_t--p
|
||||
b=../../../lib/em22
|
||||
|
||||
all: $(INTS) eminform em
|
||||
|
||||
em: em.c
|
||||
$(CC) -o em -I../../../h em.c
|
||||
|
||||
eminform: eminform.s
|
||||
as eminform.s;ld -i -o eminform a.out -lc
|
||||
|
||||
em_t---: t+ f- c- p- em_int.s
|
||||
as t+ f- c- p- em_int.s;ld -i -o em_t--- a.out -lc
|
||||
|
||||
em_----: t- f- c- p- em_int.s
|
||||
as t- f- c- p- em_int.s;ld -i -o em_---- a.out -lc
|
||||
|
||||
em_tf--: t+ f+ c- p- em_int.s
|
||||
as t+ f+ c- p- em_int.s;ld -i -o em_tf-- a.out -lc
|
||||
|
||||
em_t-c-: t+ f- c+ p- em_int.s
|
||||
as t+ f- c+ p- em_int.s;ld -i -o em_t-c- a.out -lc
|
||||
|
||||
em_t--p: t+ f- c- p+ em_int.s
|
||||
as t+ f- c- p+ em_int.s;ld -i -o em_t--p a.out -lc
|
||||
|
||||
install: all
|
||||
-mkdir $b
|
||||
cp em_???? $b
|
||||
cp em eminform ../../../bin
|
||||
cp em.1 eminform.1 ../../../man
|
||||
|
||||
cmp: all
|
||||
-cmp em_t--- $b/em_t---
|
||||
-cmp em_---- $b/em_----
|
||||
-cmp em_tf-- $b/em_tf--
|
||||
-cmp em_t-c- $b/em_t-c-
|
||||
-cmp em_t--p $b/em_t--p
|
||||
-cmp em ../../../bin/em
|
||||
-cmp eminform ../../../bin/eminform
|
||||
-cmp em.1 ../../../man/em.1
|
||||
-cmp eminform.1 ../../../man/eminform.1
|
||||
|
||||
clean:
|
||||
-rm -f *.o *.old a.out em eminform $(INTS)
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr em.c em_int.s eminform.s
|
||||
33
mach/pdp/libem/Makefile
Normal file
33
mach/pdp/libem/Makefile
Normal file
@@ -0,0 +1,33 @@
|
||||
all: head_em.o libem_o.a end.o
|
||||
|
||||
install: cp
|
||||
|
||||
cp: all
|
||||
../../install head_em.o head_em
|
||||
../../install libem_o.a tail_em
|
||||
../../install end.o end_em
|
||||
|
||||
cmp: all
|
||||
-../../compare head_em.o head_em
|
||||
-../../compare libem_o.a tail_em
|
||||
-../../compare end.o end_em
|
||||
|
||||
|
||||
head_em.o: head_em.s
|
||||
pdp -c head_em.s
|
||||
|
||||
end.o: end.s
|
||||
pdp -c end.s
|
||||
|
||||
libem_o.a: libem_s.a
|
||||
ASAR=aal ; export ASAR ; march . libem_o.a
|
||||
|
||||
clean:
|
||||
rm -f *.o libem_o.a
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr `pwd`/Makefile `pwd`/head_em.s
|
||||
@arch pv libem_s.a | pr -h `pwd`/libem_s.a
|
||||
29
mach/pdp/libem/blm.s
Normal file
29
mach/pdp/libem/blm.s
Normal file
@@ -0,0 +1,29 @@
|
||||
/ $Header$
|
||||
.globl blm~
|
||||
.globl save~,retu~
|
||||
|
||||
/ Size in r0
|
||||
blm~:
|
||||
jsr pc,save~
|
||||
mov (sp)+,r2
|
||||
mov (sp)+,r3
|
||||
mov r0,r1
|
||||
asr r0
|
||||
beq 2f
|
||||
/ Now avoid wrong copy.
|
||||
/ The pieces may overlap !
|
||||
cmp r3,r2
|
||||
beq 2f
|
||||
blt 3f
|
||||
1:
|
||||
mov (r3)+,(r2)+
|
||||
sob r0,1b
|
||||
2:
|
||||
jmp retu~
|
||||
3:
|
||||
add r1,r3
|
||||
add r1,r2
|
||||
4:
|
||||
mov -(r3),-(r2)
|
||||
sob r0,4b
|
||||
br 2b
|
||||
4
mach/pdp/libem/compmodule
Executable file
4
mach/pdp/libem/compmodule
Executable file
@@ -0,0 +1,4 @@
|
||||
if pdp -c $1 1>&2
|
||||
then echo `basename $1 $2`.o
|
||||
else exit 1
|
||||
fi
|
||||
16
mach/pdp/libem/end.s
Normal file
16
mach/pdp/libem/end.s
Normal file
@@ -0,0 +1,16 @@
|
||||
.define endtext,enddata,endbss,_etext,_edata,_end
|
||||
.sect .text
|
||||
.sect .rom
|
||||
.sect .data
|
||||
.sect .bss
|
||||
.sect .end ! only for declaration of _end and endbss.
|
||||
|
||||
.sect .text
|
||||
endtext:
|
||||
_etext:
|
||||
.sect .data
|
||||
enddata:
|
||||
_edata:
|
||||
.sect .end
|
||||
_end:
|
||||
endbss:
|
||||
75
mach/pdp/libem/head_em.s
Normal file
75
mach/pdp/libem/head_em.s
Normal file
@@ -0,0 +1,75 @@
|
||||
#
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.define LINO_AD,FILN_AD
|
||||
.define ERANGE,ESET,EHEAP,EILLINS,ECASE
|
||||
.define hol0,trppc~,trpim~,reghp~,.limhp
|
||||
! $Header$
|
||||
|
||||
#define float 1
|
||||
#define hardfp 1
|
||||
|
||||
LINO_AD = 0
|
||||
FILN_AD = 4
|
||||
|
||||
ERANGE = 1
|
||||
ESET = 2
|
||||
EFOVFL = 4
|
||||
EFUNFL = 5
|
||||
EFDIVZ = 7
|
||||
EFUND = 011
|
||||
ECONV = 012
|
||||
EHEAP = 021
|
||||
EILLINS = 022
|
||||
ECASE = 024
|
||||
|
||||
#ifdef float
|
||||
#ifndef hardfp
|
||||
! sys 060;.data2 4,fptrap / if not commented it will appear as undefined
|
||||
#endif
|
||||
sys 060;.data2 010,sig8
|
||||
ldfps $07600
|
||||
#endif
|
||||
mov 2(sp),r0
|
||||
clr -2(r0)
|
||||
mov sp,r0
|
||||
sub $4,sp
|
||||
mov 4(sp),(sp)
|
||||
tst (r0)+
|
||||
mov r0,2(sp)
|
||||
1:
|
||||
tst (r0)+
|
||||
bne 1b
|
||||
cmp r0,*2(sp)
|
||||
blo 1f
|
||||
tst -(r0)
|
||||
1:
|
||||
mov r0,4(sp)
|
||||
jsr pc,__m_a_i_n
|
||||
! next two lines for as long as tail needs printf
|
||||
! mov r0,-(sp)
|
||||
! jsr pc,*$_exit
|
||||
sys 1
|
||||
|
||||
.sect .data
|
||||
hol0: .data2 0,0 ! line no
|
||||
.data2 0,0 ! file
|
||||
trppc~: .data2 0
|
||||
trpim~: .data2 0
|
||||
reghp~: .data2 _end
|
||||
.limhp: .data2 _end
|
||||
|
||||
.sect .text
|
||||
sig8:
|
||||
#ifdef float
|
||||
mov r0,-(sp)
|
||||
stst r0
|
||||
mov 1f(r0),-(sp)
|
||||
jsr pc,trp~
|
||||
sys 060;.data2 010,sig8
|
||||
mov (sp)+,r0
|
||||
rti
|
||||
|
||||
.sect .data
|
||||
1: .data2 EILLINS, EILLINS, EFDIVZ, ECONV, EFOVFL, EFUNFL, EFUND, EILLINS
|
||||
.sect .text
|
||||
#endif
|
||||
12
mach/pdp/libem/hlt.s
Normal file
12
mach/pdp/libem/hlt.s
Normal file
@@ -0,0 +1,12 @@
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.sect .text
|
||||
.define hlt~
|
||||
! $Header$
|
||||
|
||||
exit = 1
|
||||
|
||||
hlt~:
|
||||
mov (sp)+,r0
|
||||
bne 1f
|
||||
sys exit
|
||||
1: .data2 4
|
||||
93
mach/pdp/libem/sigtrp.s
Normal file
93
mach/pdp/libem/sigtrp.s
Normal file
@@ -0,0 +1,93 @@
|
||||
.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
|
||||
.sect .text
|
||||
.define sigtrp~
|
||||
.define trp~,save~,retu~
|
||||
! $Header$
|
||||
|
||||
indir = 0
|
||||
signal = 060
|
||||
|
||||
sig1: mov sig.trp+0,-(sp)
|
||||
br 1f
|
||||
sig2: mov sig.trp+2,-(sp)
|
||||
br 1f
|
||||
sig3: mov sig.trp+4,-(sp)
|
||||
br 1f
|
||||
sig4: mov sig.trp+6,-(sp)
|
||||
br 1f
|
||||
sig5: mov sig.trp+010,-(sp)
|
||||
br 1f
|
||||
sig6: mov sig.trp+012,-(sp)
|
||||
br 1f
|
||||
sig7: mov sig.trp+014,-(sp)
|
||||
br 1f
|
||||
sig10: mov sig.trp+022,-(sp)
|
||||
br 1f
|
||||
sig11: mov sig.trp+024,-(sp)
|
||||
br 1f
|
||||
sig12: mov sig.trp+026,-(sp)
|
||||
br 1f
|
||||
sig13: mov sig.trp+030,-(sp)
|
||||
br 1f
|
||||
sig14: mov sig.trp+032,-(sp)
|
||||
br 1f
|
||||
sig15: mov sig.trp+034,-(sp)
|
||||
br 1f
|
||||
sig16: mov sig.trp+036,-(sp)
|
||||
br 1f
|
||||
1:
|
||||
jsr pc,trp~
|
||||
rti
|
||||
|
||||
sigtrp~:
|
||||
jsr pc,save~
|
||||
tst (sp)+
|
||||
mov (sp)+,r1
|
||||
mov (sp)+,r0
|
||||
ble sig.bad
|
||||
cmp r0,$020
|
||||
bhi sig.bad
|
||||
mov r0,call+02
|
||||
asl r0
|
||||
mov sig.trp-2(r0),r3
|
||||
cmp r1,$0400
|
||||
bhis 1f
|
||||
mov sig.adr-2(r0),r2
|
||||
bne 2f
|
||||
sig.bad:
|
||||
mov $-1,r0
|
||||
sigbad:
|
||||
mov r0,-(sp)
|
||||
mov r0,-(sp)
|
||||
jmp retu~
|
||||
1: cmp r1,$-3
|
||||
blo sig.bad
|
||||
mov r1,r2
|
||||
inc r2
|
||||
inc r2
|
||||
2: mov r1,sig.trp-2(r0)
|
||||
mov r2,call+04
|
||||
sys indir ; .data2 call
|
||||
bcs sigbad
|
||||
asr r0
|
||||
bcc 1f
|
||||
mov $-3,-(sp)
|
||||
clr -(sp)
|
||||
jmp retu~
|
||||
1: mov r3,-(sp)
|
||||
clr -(sp)
|
||||
jmp retu~
|
||||
|
||||
.sect .data
|
||||
call: sys signal
|
||||
.data2 0, 0
|
||||
sig.trp:
|
||||
.data2 -2, -2, -2, -2
|
||||
.data2 -2, -2, -2, -2
|
||||
.data2 -2, -2, -2, -2
|
||||
.data2 -2, -2, -2, -2
|
||||
sig.adr:
|
||||
.data2 sig1, sig2, sig3, sig
|
||||
.data2 sig5, sig6, sig7, 0
|
||||
.data2 0, sig10, sig11, sig12
|
||||
.data2 sig13, sig14, sig15, sig16
|
||||
21
mach/pdp/libpc/makefile
Normal file
21
mach/pdp/libpc/makefile
Normal file
@@ -0,0 +1,21 @@
|
||||
MAKEFILE=../../proto/libg/Makefile
|
||||
MACHDEF="MACH=pdp -Rbe-p2" "SUF=s" "ASAR=ar"
|
||||
PCDEF="PREF=pc" "SUB=" "SRC=lang/pc/libpc"
|
||||
LIBDIR=../lib
|
||||
|
||||
install:
|
||||
make -f $(MAKEFILE) $(PCDEF) $(MACHDEF) cp
|
||||
|
||||
cmp:
|
||||
make -f $(MAKEFILE) $(PCDEF) $(MACHDEF) all
|
||||
cmp head_pc $(LIBDIR)/head_pc
|
||||
cmp tail_pc $(LIBDIR)/tail_pc
|
||||
|
||||
clean:
|
||||
-rm -f *.old *.[ce$(SUF)] tail* head*
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr Makefile
|
||||
24
mach/pdp/libsys/Makefile
Normal file
24
mach/pdp/libsys/Makefile
Normal file
@@ -0,0 +1,24 @@
|
||||
# $Header$
|
||||
all: libmon_o.a
|
||||
|
||||
install: cp
|
||||
|
||||
cp: all
|
||||
../../install libmon_o.a tail_mon
|
||||
|
||||
cmp: all
|
||||
-../../compare libmon_o.a tail_mon
|
||||
|
||||
libmon_o.a: libmon_s.a
|
||||
ASAR=aal ; export ASAR ;\
|
||||
march . libmon_o.a
|
||||
|
||||
clean:
|
||||
rm -f *.o libmon_o.a
|
||||
|
||||
opr:
|
||||
make pr | opr
|
||||
|
||||
pr:
|
||||
@pr `pwd`/Makefile
|
||||
@arch pv libmon_s.a | pr -h `pwd`/libmon_s.a
|
||||
4
mach/pdp/libsys/compmodule
Executable file
4
mach/pdp/libsys/compmodule
Executable file
@@ -0,0 +1,4 @@
|
||||
if pdp -L -O -c -I../../../h -I. $1 1>&2
|
||||
then echo `basename $1 $2`.o
|
||||
else exit 1
|
||||
fi
|
||||
197
mach/pdp/ncg/Makefile
Normal file
197
mach/pdp/ncg/Makefile
Normal file
@@ -0,0 +1,197 @@
|
||||
# $Header$
|
||||
|
||||
EMHOME=../../..
|
||||
#preprocessor flags for table
|
||||
TABLEFLAGS=
|
||||
#cgg options
|
||||
CGGFLAGS=
|
||||
|
||||
PREFLAGS=-I$(EMHOME)/h -I. -I$(EMHOME)/mach -I$(EMHOME)/modules/h -DNDEBUG
|
||||
PFLAGS=
|
||||
CFLAGS=$(PREFLAGS) $(PFLAGS) -O
|
||||
LDFLAGS=$(PFLAGS)
|
||||
LINTOPTS=-bx
|
||||
LIBS=$(EMHOME)/lib/em_data.a $(EMHOME)/modules/lib/libflt.a
|
||||
CDIR=$(EMHOME)/mach/proto/ncg
|
||||
CGG=$(EMHOME)/lib/ncgg
|
||||
CPP=$(EMHOME)/lib/cpp
|
||||
CFILES=$(CDIR)/codegen.c $(CDIR)/compute.c $(CDIR)/equiv.c $(CDIR)/fillem.c \
|
||||
$(CDIR)/gencode.c $(CDIR)/glosym.c $(CDIR)/label.c $(CDIR)/main.c \
|
||||
$(CDIR)/move.c $(CDIR)/nextem.c $(CDIR)/reg.c $(CDIR)/regvar.c \
|
||||
$(CDIR)/salloc.c $(CDIR)/state.c $(CDIR)/subr.c $(CDIR)/var.c
|
||||
OFILES=codegen.o compute.o equiv.o fillem.o gencode.o glosym.o label.o \
|
||||
main.o move.o nextem.o reg.o regvar.o salloc.o state.o subr.o var.o
|
||||
|
||||
all: tables.c
|
||||
make "EMHOME="$(EMHOME) cg
|
||||
|
||||
cg: tables.o $(OFILES)
|
||||
$(CC) $(LDFLAGS) $(OFILES) tables.o $(LIBS) -o cg
|
||||
|
||||
tables.o: tables.c
|
||||
$(CC) -c $(PREFLAGS) -I$(CDIR) tables.c
|
||||
|
||||
codegen.o: $(CDIR)/codegen.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/codegen.c
|
||||
compute.o: $(CDIR)/compute.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/compute.c
|
||||
equiv.o: $(CDIR)/equiv.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/equiv.c
|
||||
fillem.o: $(CDIR)/fillem.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/fillem.c
|
||||
gencode.o: $(CDIR)/gencode.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/gencode.c
|
||||
glosym.o: $(CDIR)/glosym.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/glosym.c
|
||||
label.o: $(CDIR)/label.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/label.c
|
||||
main.o: $(CDIR)/main.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/main.c
|
||||
move.o: $(CDIR)/move.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/move.c
|
||||
nextem.o: $(CDIR)/nextem.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/nextem.c
|
||||
reg.o: $(CDIR)/reg.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/reg.c
|
||||
regvar.o: $(CDIR)/regvar.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/regvar.c
|
||||
salloc.o: $(CDIR)/salloc.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/salloc.c
|
||||
state.o: $(CDIR)/state.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/state.c
|
||||
subr.o: $(CDIR)/subr.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/subr.c
|
||||
var.o: $(CDIR)/var.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/var.c
|
||||
|
||||
install: all
|
||||
$(EMHOME)/mach/install cg
|
||||
|
||||
cmp: all
|
||||
-$(EMHOME)/mach/compare cg
|
||||
|
||||
|
||||
tables.c: table $(CGG)
|
||||
$(CPP) $(TABLEFLAGS) table | $(CGG) $(CGGFLAGS)
|
||||
-cmp tables.h tables.H || cp tables.H tables.h
|
||||
|
||||
lint: $(CFILES) tables.c
|
||||
lint $(LINTOPTS) $(PREFLAGS) -I$(CDIR) $(CFILES) tables.c
|
||||
clean:
|
||||
rm -f *.o tables.c tables.h debug.out cg tables.H
|
||||
|
||||
distr: tables.c
|
||||
rm -f tables1.c tables1.h
|
||||
cp tables.c tables1.c
|
||||
cp tables.h tables1.h
|
||||
chmod -w tables1.[ch]
|
||||
|
||||
codegen.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
codegen.o: $(CDIR)/data.h
|
||||
codegen.o: $(CDIR)/equiv.h
|
||||
codegen.o: $(CDIR)/extern.h
|
||||
codegen.o: $(CDIR)/param.h
|
||||
codegen.o: $(CDIR)/result.h
|
||||
codegen.o: $(CDIR)/state.h
|
||||
codegen.o: tables.h
|
||||
codegen.o: $(CDIR)/types.h
|
||||
compute.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
compute.o: $(CDIR)/data.h
|
||||
compute.o: $(CDIR)/extern.h
|
||||
compute.o: $(CDIR)/glosym.h
|
||||
compute.o: $(CDIR)/label.h
|
||||
compute.o: $(CDIR)/param.h
|
||||
compute.o: $(CDIR)/result.h
|
||||
compute.o: tables.h
|
||||
compute.o: $(CDIR)/types.h
|
||||
equiv.o: $(CDIR)/assert.h
|
||||
equiv.o: $(CDIR)/data.h $(EMHOME)/h/cgg_cg.h
|
||||
equiv.o: $(CDIR)/equiv.h
|
||||
equiv.o: $(CDIR)/extern.h
|
||||
equiv.o: $(CDIR)/param.h
|
||||
equiv.o: $(CDIR)/result.h
|
||||
equiv.o: tables.h
|
||||
equiv.o: $(CDIR)/types.h
|
||||
fillem.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
fillem.o: $(CDIR)/data.h
|
||||
fillem.o: $(CDIR)/extern.h
|
||||
fillem.o: mach.c
|
||||
fillem.o: mach.h
|
||||
fillem.o: $(CDIR)/param.h
|
||||
fillem.o: $(CDIR)/regvar.h
|
||||
fillem.o: $(CDIR)/result.h
|
||||
fillem.o: tables.h
|
||||
fillem.o: $(CDIR)/types.h
|
||||
gencode.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
gencode.o: $(CDIR)/data.h
|
||||
gencode.o: $(CDIR)/extern.h
|
||||
gencode.o: $(CDIR)/param.h
|
||||
gencode.o: $(CDIR)/result.h
|
||||
gencode.o: tables.h
|
||||
gencode.o: $(CDIR)/types.h
|
||||
glosym.o: $(CDIR)/glosym.h
|
||||
glosym.o: $(CDIR)/param.h
|
||||
glosym.o: tables.h
|
||||
glosym.o: $(CDIR)/types.h
|
||||
label.o: $(CDIR)/label.h
|
||||
label.o: $(CDIR)/param.h
|
||||
label.o: tables.h
|
||||
label.o: $(CDIR)/types.h
|
||||
main.o: $(CDIR)/param.h
|
||||
main.o: tables.h
|
||||
move.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
move.o: $(CDIR)/data.h
|
||||
move.o: $(CDIR)/extern.h
|
||||
move.o: $(CDIR)/param.h
|
||||
move.o: $(CDIR)/result.h
|
||||
move.o: tables.h
|
||||
move.o: $(CDIR)/types.h
|
||||
nextem.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
nextem.o: $(CDIR)/data.h
|
||||
nextem.o: $(CDIR)/extern.h
|
||||
nextem.o: $(CDIR)/param.h
|
||||
nextem.o: $(CDIR)/result.h
|
||||
nextem.o: tables.h
|
||||
nextem.o: $(CDIR)/types.h
|
||||
reg.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
reg.o: $(CDIR)/data.h
|
||||
reg.o: $(CDIR)/extern.h
|
||||
reg.o: $(CDIR)/param.h
|
||||
reg.o: $(CDIR)/result.h
|
||||
reg.o: tables.h
|
||||
reg.o: $(CDIR)/types.h
|
||||
regvar.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
regvar.o: $(CDIR)/data.h
|
||||
regvar.o: $(CDIR)/extern.h
|
||||
regvar.o: $(CDIR)/param.h
|
||||
regvar.o: $(CDIR)/regvar.h
|
||||
regvar.o: $(CDIR)/result.h
|
||||
regvar.o: tables.h
|
||||
regvar.o: $(CDIR)/types.h
|
||||
salloc.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
salloc.o: $(CDIR)/data.h
|
||||
salloc.o: $(CDIR)/extern.h
|
||||
salloc.o: $(CDIR)/param.h
|
||||
salloc.o: $(CDIR)/result.h
|
||||
salloc.o: tables.h
|
||||
salloc.o: $(CDIR)/types.h
|
||||
state.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
state.o: $(CDIR)/data.h
|
||||
state.o: $(CDIR)/extern.h
|
||||
state.o: $(CDIR)/param.h
|
||||
state.o: $(CDIR)/result.h
|
||||
state.o: $(CDIR)/state.h
|
||||
state.o: tables.h
|
||||
state.o: $(CDIR)/types.h
|
||||
subr.o: $(CDIR)/assert.h $(EMHOME)/h/cgg_cg.h
|
||||
subr.o: $(CDIR)/data.h
|
||||
subr.o: $(CDIR)/extern.h
|
||||
subr.o: $(CDIR)/param.h
|
||||
subr.o: $(CDIR)/result.h
|
||||
subr.o: tables.h
|
||||
subr.o: $(CDIR)/types.h
|
||||
var.o: $(CDIR)/data.h $(EMHOME)/h/cgg_cg.h
|
||||
var.o: $(CDIR)/param.h
|
||||
var.o: $(CDIR)/result.h
|
||||
var.o: tables.h
|
||||
var.o: $(CDIR)/types.h
|
||||
42
mach/pdp/top/Makefile
Normal file
42
mach/pdp/top/Makefile
Normal file
@@ -0,0 +1,42 @@
|
||||
EMHOME=../../..
|
||||
LIBS=$(EMHOME)/modules/lib/libstring.a
|
||||
PREFLAGS=-I.
|
||||
PFLAGS=
|
||||
CFLAGS=$(PREFLAGS) $(PFLAGS) -O -DNDEBUG
|
||||
LDFLAGS=$(PFLAGS)
|
||||
LINTOPTS=-bx
|
||||
CDIR=$(EMHOME)/mach/proto/top
|
||||
CFILES=$(CDIR)/top.c $(CDIR)/queue.c
|
||||
OFILES=top.o queue.o
|
||||
|
||||
all: gen.c
|
||||
make top
|
||||
|
||||
top: $(OFILES)
|
||||
$(CC) $(LDFLAGS) $(OFILES) $(LIBS) -o top
|
||||
|
||||
top.o: $(CDIR)/top.c gen.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/top.c
|
||||
|
||||
queue.o: $(CDIR)/queue.c
|
||||
$(CC) -c $(CFLAGS) $(CDIR)/queue.c
|
||||
|
||||
install: all
|
||||
$(EMHOME)/mach/install top
|
||||
|
||||
cmp: all
|
||||
-$(EMHOME)/mach/compare top
|
||||
|
||||
gen.c: table
|
||||
$(EMHOME)/lib/topgen table
|
||||
|
||||
lint: $(CFILES)
|
||||
lint $(LINTOPTS) $(PREFLAGS) $(CFILES)
|
||||
|
||||
clean:
|
||||
rm -f *.o gen.c gen.h top
|
||||
|
||||
top.o: gen.h
|
||||
top.o: $(CDIR)/top.h
|
||||
top.o: $(CDIR)/queue.h
|
||||
queue.o: $(CDIR)/queue.h
|
||||
Reference in New Issue
Block a user