*** empty log message ***
This commit is contained in:
parent
f90babad30
commit
177af75c93
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
28
mach/m68k2/as/mach0.c
Normal file
28
mach/m68k2/as/mach0.c
Normal file
|
@ -0,0 +1,28 @@
|
|||
#define DUK
|
||||
/* @(#)mach0.c 1.5 */
|
||||
/*
|
||||
* Motorola 68000/68010 options
|
||||
*/
|
||||
#undef BITMAX
|
||||
#define BITMAX 8000
|
||||
|
||||
#define THREE_PASS /* branch and offset optimization */
|
||||
#define BYTES_REVERSED /* high order byte has lowest address */
|
||||
#define WORDS_REVERSED /* high order word has lowest address */
|
||||
#define LISTING /* enable listing facilities */
|
||||
#define RELOCATION /* generate relocatable code */
|
||||
|
||||
#undef valu_t
|
||||
#define valu_t long
|
||||
#undef addr_t
|
||||
#define addr_t long
|
||||
|
||||
#undef ALIGNWORD
|
||||
#define ALIGNWORD 2
|
||||
#undef ALIGNSECT
|
||||
#define ALIGNSECT 2
|
||||
|
||||
#undef VALWIDTH
|
||||
#define VALWIDTH 8
|
||||
|
||||
#define NOLD /* Added by Duk Bekema. */
|
58
mach/m68k2/as/mach1.c
Normal file
58
mach/m68k2/as/mach1.c
Normal file
|
@ -0,0 +1,58 @@
|
|||
/* @(#)mach1.c 1.8 */
|
||||
/*
|
||||
* Motorola 68000/68010 dependent C declarations
|
||||
*/
|
||||
|
||||
#define low3(z) ((short)(z) & 07)
|
||||
#define low4(z) ((short)(z) & 017)
|
||||
|
||||
#define fit3(z) ((((z)-1) & ~07) == 0)
|
||||
#define fit4(z) (((z) & ~017) == 0)
|
||||
#define fit8(z) (((z) & ~0xFF) == 0)
|
||||
#define fit16(z) (((z) & ~0xFFFF) == 0)
|
||||
|
||||
#define SIZE_B 0000
|
||||
#define SIZE_W 0100
|
||||
#define SIZE_L 0200
|
||||
#define SIZE_NON 0300
|
||||
#define SIZE_DEF SIZE_W
|
||||
|
||||
extern int mrg_1,mrg_2;
|
||||
extern expr_t exp_1,exp_2;
|
||||
#ifndef ASLD
|
||||
extern valu_t rel_1,rel_2;
|
||||
#endif
|
||||
extern int model; /* 68000/68010 */
|
||||
|
||||
/* addressing mode bits */
|
||||
#define DTA 0x01
|
||||
#define MEM 0x02
|
||||
#define CTR 0x04
|
||||
#define ALT 0x08
|
||||
#define FITB 0x10
|
||||
#define FITW 0x20
|
||||
#define PUTW 0x40
|
||||
#define PUTL 0x80
|
||||
|
||||
#ifndef extern
|
||||
extern short eamode[];
|
||||
#else
|
||||
short eamode[] = {
|
||||
/* 00A */ DTA |ALT,
|
||||
/* 01A */ ALT,
|
||||
/* 02A */ DTA|MEM|CTR|ALT,
|
||||
/* 03A */ DTA|MEM |ALT,
|
||||
/* 04A */ DTA|MEM |ALT,
|
||||
/* 05A */ DTA|MEM|CTR|ALT|FITW|PUTW | (RELO2 )<<8,
|
||||
/* 06A */ DTA|MEM|CTR|ALT |PUTW | (RELO1 )<<8,
|
||||
/* 07x */ 0,
|
||||
/* 070 */ DTA|MEM|CTR|ALT|FITW|PUTW | (RELO2 )<<8,
|
||||
/* 071 */ DTA|MEM|CTR|ALT |PUTL | (RELO4 )<<8,
|
||||
/* 072 */ DTA|MEM|CTR |FITW|PUTW | (RELO2|RELPC)<<8,
|
||||
/* 073 */ DTA|MEM|CTR |PUTW | (RELO1|RELPC)<<8,
|
||||
/* 074x */ 0,
|
||||
/* 074B */ DTA|MEM |FITB|PUTW | (RELO1 )<<8,
|
||||
/* 074W */ DTA|MEM |FITW|PUTW | (RELO2 )<<8,
|
||||
/* 074L */ DTA|MEM |PUTL | (RELO4 )<<8,
|
||||
};
|
||||
#endif
|
42
mach/m68k2/as/mach2.c
Normal file
42
mach/m68k2/as/mach2.c
Normal file
|
@ -0,0 +1,42 @@
|
|||
/* @(#)mach2.c 1.5 */
|
||||
/*
|
||||
* Motorola 68000/68010 tokens
|
||||
*/
|
||||
|
||||
%token <y_word> SIZE
|
||||
%token <y_word> DREG
|
||||
%token <y_word> AREG
|
||||
%token <y_word> PC
|
||||
%token <y_word> CREG
|
||||
%token <y_word> SPEC
|
||||
%token <y_word> ABCD
|
||||
%token <y_word> ADDX
|
||||
%token <y_word> ADD
|
||||
%token <y_word> AND
|
||||
%token <y_word> BITOP
|
||||
%token <y_word> SHIFT
|
||||
%token <y_word> SZ_EA
|
||||
%token <y_word> OP_EA
|
||||
%token <y_word> OP_NOOP
|
||||
%token <y_word> OP_EA_D
|
||||
%token <y_word> LEA
|
||||
%token <y_word> DBR
|
||||
%token <y_word> BR
|
||||
%token <y_word> CMP
|
||||
%token <y_word> MOVE
|
||||
%token <y_word> MOVEP
|
||||
%token <y_word> MOVEM
|
||||
%token <y_word> MOVEC
|
||||
%token <y_word> MOVES
|
||||
%token <y_word> SWAP
|
||||
%token <y_word> LINK
|
||||
%token <y_word> UNLK
|
||||
%token <y_word> TRAP
|
||||
%token <y_word> STOP
|
||||
%token <y_word> EXG
|
||||
%token <y_word> OP_EXT
|
||||
%token <y_word> RTD
|
||||
%token <y_word> MODEL
|
||||
|
||||
%type <y_word> bcdx op_ea regs rrange
|
||||
%type <y_word> reg sizedef sizenon creg
|
171
mach/m68k2/as/mach3.c
Normal file
171
mach/m68k2/as/mach3.c
Normal file
|
@ -0,0 +1,171 @@
|
|||
/* @(#)mach3.c 1.4 */
|
||||
/*
|
||||
* Motorola 68000/68010 keywords
|
||||
*/
|
||||
|
||||
0, SIZE, SIZE_B, ".b",
|
||||
0, SIZE, SIZE_W, ".w",
|
||||
0, SIZE, SIZE_L, ".l",
|
||||
|
||||
0, DREG, 00, "d0",
|
||||
0, DREG, 01, "d1",
|
||||
0, DREG, 02, "d2",
|
||||
0, DREG, 03, "d3",
|
||||
0, DREG, 04, "d4",
|
||||
0, DREG, 05, "d5",
|
||||
0, DREG, 06, "d6",
|
||||
0, DREG, 07, "d7",
|
||||
|
||||
0, AREG, 00, "a0",
|
||||
0, AREG, 01, "a1",
|
||||
0, AREG, 02, "a2",
|
||||
0, AREG, 03, "a3",
|
||||
0, AREG, 04, "a4",
|
||||
0, AREG, 05, "a5",
|
||||
0, AREG, 06, "a6",
|
||||
0, AREG, 07, "a7",
|
||||
0, AREG, 07, "sp",
|
||||
|
||||
0, PC, 8, "pc",
|
||||
|
||||
0, MODEL, 0, ".68000",
|
||||
0, MODEL, 1, ".68010",
|
||||
|
||||
0, CREG, 04001, "vbr",
|
||||
0, CREG, 0, "sfc",
|
||||
0, CREG, 00001, "dfc",
|
||||
|
||||
0, SPEC, 075, "usp",
|
||||
0, SPEC, 076, "ccr",
|
||||
0, SPEC, 077, "sr",
|
||||
|
||||
0, ABCD, 0140400, "abcd",
|
||||
0, ABCD, 0100400, "sbcd",
|
||||
|
||||
0, ADDX, 0150400, "addx",
|
||||
0, ADDX, 0110400, "subx",
|
||||
|
||||
0, ADD, 0153300, "add",
|
||||
0, ADD, 0112700, "sub",
|
||||
|
||||
0, AND, 0141000, "and",
|
||||
0, AND, 0135000, "eor",
|
||||
0, AND, 0100000, "or",
|
||||
|
||||
0, BITOP, 0000, "btst",
|
||||
0, BITOP, 0100, "bchg",
|
||||
0, BITOP, 0200, "bclr",
|
||||
0, BITOP, 0300, "bset",
|
||||
|
||||
0, SHIFT, 0160340, "asr",
|
||||
0, SHIFT, 0160740, "asl",
|
||||
0, SHIFT, 0161350, "lsr",
|
||||
0, SHIFT, 0161750, "lsl",
|
||||
0, SHIFT, 0162360, "roxr",
|
||||
0, SHIFT, 0162760, "roxl",
|
||||
0, SHIFT, 0163370, "ror",
|
||||
0, SHIFT, 0163770, "rol",
|
||||
|
||||
0, SZ_EA, 041000|DTA|ALT, "clr",
|
||||
0, SZ_EA, 042000|DTA|ALT, "neg",
|
||||
0, SZ_EA, 040000|DTA|ALT, "negx",
|
||||
0, SZ_EA, 043000|DTA|ALT, "not",
|
||||
0, SZ_EA, 045000|DTA|ALT, "tst",
|
||||
|
||||
0, OP_EA, 044000|DTA|ALT, "nbcd",
|
||||
0, OP_EA, 045300|DTA|ALT, "tas",
|
||||
0, OP_EA, 047200|CTR, "jsr",
|
||||
0, OP_EA, 047300|CTR, "jmp",
|
||||
0, OP_EA, 044100|CTR, "pea",
|
||||
|
||||
0, OP_EA, 050300, "st",
|
||||
0, OP_EA, 050700, "sf",
|
||||
0, OP_EA, 051300, "shi",
|
||||
0, OP_EA, 051700, "sls",
|
||||
0, OP_EA, 052300, "scc",
|
||||
0, OP_EA, 052700, "scs",
|
||||
0, OP_EA, 053300, "sne",
|
||||
0, OP_EA, 053700, "seq",
|
||||
0, OP_EA, 054300, "svc",
|
||||
0, OP_EA, 054700, "svs",
|
||||
0, OP_EA, 055300, "spl",
|
||||
0, OP_EA, 055700, "smi",
|
||||
0, OP_EA, 056300, "sge",
|
||||
0, OP_EA, 056700, "slt",
|
||||
0, OP_EA, 057300, "sgt",
|
||||
0, OP_EA, 057700, "sle",
|
||||
|
||||
0, OP_NOOP, 047160, "reset",
|
||||
0, OP_NOOP, 047161, "nop",
|
||||
0, OP_NOOP, 047163, "rte",
|
||||
0, OP_NOOP, 047165, "rts",
|
||||
0, OP_NOOP, 047166, "trapv",
|
||||
0, OP_NOOP, 047167, "rtr",
|
||||
0, OP_NOOP, 045374, "illegal",
|
||||
|
||||
0, OP_EA_D, 040600, "chk",
|
||||
0, OP_EA_D, 0100300, "divu",
|
||||
0, OP_EA_D, 0100700, "divs",
|
||||
0, OP_EA_D, 0140300, "mulu",
|
||||
0, OP_EA_D, 0140700, "muls",
|
||||
|
||||
0, BR, 060000, "bra",
|
||||
0, BR, 060400, "bsr",
|
||||
0, BR, 061000, "bhi",
|
||||
0, BR, 061400, "bls",
|
||||
0, BR, 062000, "bcc",
|
||||
0, BR, 062400, "bcs",
|
||||
0, BR, 063000, "bne",
|
||||
0, BR, 063400, "beq",
|
||||
0, BR, 064000, "bvc",
|
||||
0, BR, 064400, "bvs",
|
||||
0, BR, 065000, "bpl",
|
||||
0, BR, 065400, "bmi",
|
||||
0, BR, 066000, "bge",
|
||||
0, BR, 066400, "blt",
|
||||
0, BR, 067000, "bgt",
|
||||
0, BR, 067400, "ble",
|
||||
|
||||
0, DBR, 050310, "dbt",
|
||||
0, DBR, 050710, "dbf",
|
||||
0, DBR, 050710, "dbra",
|
||||
0, DBR, 051310, "dbhi",
|
||||
0, DBR, 051710, "dbls",
|
||||
0, DBR, 052310, "dbcc",
|
||||
0, DBR, 052710, "dbcs",
|
||||
0, DBR, 053310, "dbne",
|
||||
0, DBR, 053710, "dbeq",
|
||||
0, DBR, 054310, "dbvc",
|
||||
0, DBR, 054710, "dbvs",
|
||||
0, DBR, 055310, "dbpl",
|
||||
0, DBR, 055710, "dbmi",
|
||||
0, DBR, 056310, "dbge",
|
||||
0, DBR, 056710, "dblt",
|
||||
0, DBR, 057310, "dbgt",
|
||||
0, DBR, 057710, "dble",
|
||||
|
||||
0, CMP, 0, "cmp",
|
||||
|
||||
0, MOVE, 0, "move",
|
||||
0, MOVEP, 0, "movep",
|
||||
0, MOVEM, 0, "movem",
|
||||
0, MOVES, 0, "moves",
|
||||
0, MOVEC, 0, "movec",
|
||||
|
||||
0, SWAP, 0, "swap",
|
||||
|
||||
0, LINK, 0, "link",
|
||||
|
||||
0, UNLK, 0, "unlk",
|
||||
|
||||
0, TRAP, 0, "trap",
|
||||
|
||||
0, STOP, 047162, "stop",
|
||||
|
||||
0, EXG, 0, "exg",
|
||||
|
||||
0, OP_EXT, 0, "ext",
|
||||
|
||||
0, LEA, 0, "lea",
|
||||
|
||||
0, RTD, 0, "rtd",
|
196
mach/m68k2/as/mach4.c
Normal file
196
mach/m68k2/as/mach4.c
Normal file
|
@ -0,0 +1,196 @@
|
|||
/* @(#)mach4.c 1.11 */
|
||||
/*
|
||||
* Motorola 68000/68010 syntax rules
|
||||
*/
|
||||
|
||||
operation
|
||||
: bcdx DREG ',' DREG
|
||||
{ emit2($1 | $2 | $4<<9);}
|
||||
| bcdx '-' '(' AREG ')' ',' '-' '(' AREG ')'
|
||||
{ emit2($1 | $4 | $9<<9 | 010);}
|
||||
| ADD sizedef ea_ea
|
||||
{ add($1, $2);}
|
||||
| AND sizenon ea_ea
|
||||
{ and($1, $2);}
|
||||
| SHIFT sizedef ea_ea
|
||||
{ shift_op($1, $2);}
|
||||
| BR expr
|
||||
{ branch($1, $2);}
|
||||
| DBR DREG ',' expr
|
||||
{ $4.val -= (DOTVAL+2);
|
||||
fit(fitw($4.val));
|
||||
emit2($1 | $2);
|
||||
#ifdef RELOCATION
|
||||
#ifdef DUK
|
||||
newrelo($4.typ, RELPC|RELO2|RELBR|RELWR);
|
||||
#else DUK
|
||||
newrelo($4.typ, RELPC|RELO2);
|
||||
#endif DUK
|
||||
#endif
|
||||
emit2(loww($4.val));
|
||||
}
|
||||
| BITOP ea_ea
|
||||
{ bitop($1);}
|
||||
| OP_EA_D ea ',' DREG
|
||||
{ emit2($1 | mrg_2 | $4<<9);
|
||||
ea_2(SIZE_W, DTA);
|
||||
}
|
||||
| LEA ea ',' AREG
|
||||
{ emit2(040700 | mrg_2 | $4<<9);
|
||||
ea_2(SIZE_L, CTR);
|
||||
}
|
||||
| op_ea ea
|
||||
{ emit2(($1&0177700) | mrg_2);
|
||||
ea_2($1&0300, $1&017);
|
||||
}
|
||||
| OP_NOOP
|
||||
{ emit2($1);}
|
||||
| CMP sizedef ea_ea
|
||||
{ cmp($2);}
|
||||
| MOVE sizenon ea_ea
|
||||
{ move($2);}
|
||||
| MOVEP sizedef ea_ea
|
||||
{ movep($2);}
|
||||
| MOVEM sizedef regs ',' notimmreg
|
||||
{ movem(0, $2, $3);}
|
||||
| MOVEM sizedef notimmreg ',' regs
|
||||
{ movem(1, $2, $5);}
|
||||
| MOVES sizedef ea_ea
|
||||
{ test68010();
|
||||
if (mrg_1 <= 017) {
|
||||
emit2(007000 | $2 | mrg_2);
|
||||
emit2(mrg_1 << 12 | 04000);
|
||||
ea_2($2,ALT|MEM);
|
||||
} else if (mrg_2 <= 017) {
|
||||
emit2(007000 | $2 | mrg_1);
|
||||
emit2(mrg_2 << 12);
|
||||
ea_1($2,ALT|MEM);
|
||||
} else
|
||||
badoperand();
|
||||
}
|
||||
| MOVEC creg ',' reg
|
||||
{ test68010();
|
||||
emit2(047172); emit2($2 | $4<<12);
|
||||
}
|
||||
| MOVEC reg ',' creg
|
||||
{ test68010();
|
||||
emit2(047173); emit2($4 | $2<<12);
|
||||
}
|
||||
| EXG reg ',' reg
|
||||
{ if (($2 & 010) == 0)
|
||||
emit2(
|
||||
(0140500|$4|$2<<9)
|
||||
+
|
||||
(($4&010)<<3)
|
||||
);
|
||||
else
|
||||
emit2(
|
||||
(0140600|$2|($4&07)<<9)
|
||||
-
|
||||
(($4&010)<<3)
|
||||
);
|
||||
}
|
||||
| OP_EXT sizedef DREG
|
||||
{ checksize($2, 2|4); emit2(044000 | $2+0100 | $3);}
|
||||
| SWAP DREG
|
||||
{ emit2(044100 | $2);}
|
||||
| STOP imm
|
||||
{ emit2($1); ea_2(SIZE_W, 0);}
|
||||
| LINK AREG ',' imm
|
||||
{ emit2(047120 | $2); ea_2(SIZE_W, 0);}
|
||||
| UNLK AREG
|
||||
{ emit2(047130 | $2);}
|
||||
| TRAP '#' absexp
|
||||
{ fit(fit4($3)); emit2(047100|low4($3));}
|
||||
| RTD imm
|
||||
{ test68010();
|
||||
emit2(047164);
|
||||
ea_2(SIZE_W, 0);
|
||||
}
|
||||
| MODEL
|
||||
{ model = $1;}
|
||||
;
|
||||
bcdx : ABCD
|
||||
| ADDX sizedef
|
||||
{ $$ = $1 | $2;}
|
||||
;
|
||||
creg : CREG
|
||||
| SPEC { if ($1 != 075) badoperand(); $$ = 04000;}
|
||||
;
|
||||
op_ea : OP_EA
|
||||
| SZ_EA sizedef
|
||||
{ $$ = $1 | $2;}
|
||||
;
|
||||
regs : rrange
|
||||
| regs '/' rrange
|
||||
{ $$ = $1 | $3;}
|
||||
;
|
||||
rrange : reg
|
||||
{ $$ = 1<<$1;}
|
||||
| reg '-' reg
|
||||
{ if ($1 > $3)
|
||||
badoperand();
|
||||
for ($$ = 0; $1 <= $3; $1++)
|
||||
$$ |= (1<<$1);
|
||||
}
|
||||
;
|
||||
ea : DREG
|
||||
{ mrg_2 = $1;}
|
||||
| AREG
|
||||
{ mrg_2 = 010 | $1;}
|
||||
| SPEC
|
||||
{ mrg_2 = $1;}
|
||||
| notimmreg
|
||||
| imm
|
||||
;
|
||||
notimmreg
|
||||
: '(' AREG ')'
|
||||
{ mrg_2 = 020 | $2;}
|
||||
| '(' AREG ')' '+'
|
||||
{ mrg_2 = 030 | $2;}
|
||||
| '-' '(' AREG ')'
|
||||
{ mrg_2 = 040 | $3;}
|
||||
| expr sizenon
|
||||
{ exp_2 = $1; ea707172($2);
|
||||
RELOMOVE(rel_2, relonami);
|
||||
}
|
||||
| expr '(' reg sizenon ')'
|
||||
{ exp_2 = $1; ea5x73($3, $4);
|
||||
RELOMOVE(rel_2, relonami);
|
||||
}
|
||||
| expr '(' AREG ',' reg sizedef ')'
|
||||
{ exp_2 = $1; ea6x($3, $5, $6);
|
||||
RELOMOVE(rel_2, relonami);
|
||||
}
|
||||
| expr '(' PC ')'
|
||||
{ exp_2 = $1; ea72();
|
||||
RELOMOVE(rel_2, relonami);
|
||||
}
|
||||
| expr '(' PC ',' reg sizedef ')'
|
||||
{ exp_2 = $1; ea73($5, $6);
|
||||
RELOMOVE(rel_2, relonami);
|
||||
}
|
||||
;
|
||||
imm : '#' expr
|
||||
{ mrg_2 = 074; exp_2 = $2;
|
||||
RELOMOVE(rel_2, relonami);
|
||||
}
|
||||
;
|
||||
reg : DREG
|
||||
| AREG
|
||||
{ $$ = $1 | 010;}
|
||||
;
|
||||
sizedef : /* empty */
|
||||
{ $$ = SIZE_DEF;}
|
||||
| SIZE
|
||||
;
|
||||
sizenon : /* empty */
|
||||
{ $$ = SIZE_NON;}
|
||||
| SIZE
|
||||
;
|
||||
ea_ea : ea ','
|
||||
{ mrg_1 = mrg_2; exp_1 = exp_2;
|
||||
RELOMOVE(rel_1, rel_2);
|
||||
}
|
||||
ea
|
||||
;
|
460
mach/m68k2/as/mach5.c
Normal file
460
mach/m68k2/as/mach5.c
Normal file
|
@ -0,0 +1,460 @@
|
|||
/* @(#)mach5.c 1.16 */
|
||||
/*
|
||||
* Motorola 68000/68010 auxiliary functions
|
||||
*/
|
||||
|
||||
ea_1(sz, bits)
|
||||
{
|
||||
register flag;
|
||||
|
||||
if (mrg_1 > 074)
|
||||
serror("no specials");
|
||||
if ((flag = eamode[mrg_1>>3]) == 0)
|
||||
if ((flag = eamode[010 + (mrg_1&07)]) == 0)
|
||||
flag = eamode[015 + (sz>>6)];
|
||||
if ((mrg_1 & 070) == 010)
|
||||
checksize(sz, 2|4);
|
||||
bits &= ~flag;
|
||||
if (bits)
|
||||
serror("bad addressing categorie");
|
||||
if (flag & FITW)
|
||||
if (
|
||||
! fitw(exp_1.val)
|
||||
&&
|
||||
(mrg_1 != 074 || ! fit16(exp_1.val))
|
||||
)
|
||||
nofit();
|
||||
if (flag & FITB) {
|
||||
if (
|
||||
! fitb(exp_1.val)
|
||||
&&
|
||||
(mrg_1 != 074 || ! fit8(exp_1.val))
|
||||
)
|
||||
nofit();
|
||||
if (mrg_1 == 074)
|
||||
exp_1.val &= 0xFF;
|
||||
}
|
||||
#ifdef RELOCATION
|
||||
RELOMOVE(relonami, rel_1);
|
||||
if (flag & ~0xFF)
|
||||
#ifdef DUK
|
||||
newrelo(exp_1.typ, (flag>>8) | RELBR | RELWR);
|
||||
#else DUK
|
||||
newrelo(exp_1.typ, flag>>8);
|
||||
#endif DUK
|
||||
#endif
|
||||
if (flag & PUTL)
|
||||
emit4(exp_1.val);
|
||||
if (flag & PUTW)
|
||||
emit2(loww(exp_1.val));
|
||||
}
|
||||
|
||||
ea_2(sz, bits)
|
||||
{
|
||||
mrg_1 = mrg_2;
|
||||
exp_1 = exp_2;
|
||||
RELOMOVE(rel_1, rel_2);
|
||||
ea_1(sz, bits);
|
||||
}
|
||||
|
||||
index(hibyte)
|
||||
{
|
||||
fit(fitb(exp_2.val));
|
||||
exp_2.val = hibyte | lowb(exp_2.val);
|
||||
}
|
||||
|
||||
checksize(sz, bits)
|
||||
{
|
||||
if ((bits & (1 << (sz>>6))) == 0)
|
||||
serror("bad size");
|
||||
}
|
||||
|
||||
test68010()
|
||||
{
|
||||
if (model != 1)
|
||||
warning("68010 instruction");
|
||||
}
|
||||
|
||||
badoperand()
|
||||
{
|
||||
serror("bad operands");
|
||||
}
|
||||
|
||||
shift_op(opc, sz)
|
||||
{
|
||||
if (mrg_1 < 010 && mrg_2 < 010) {
|
||||
emit2((opc&0170470) | sz | mrg_1<<9 | mrg_2);
|
||||
return;
|
||||
}
|
||||
if (exp_1.typ != S_ABS || mrg_1 != 074) {
|
||||
badoperand();
|
||||
return;
|
||||
}
|
||||
if (mrg_2 < 010) {
|
||||
fit(fit3(exp_1.val));
|
||||
emit2((opc&0170430) | sz | low3(exp_1.val)<<9 | mrg_2);
|
||||
return;
|
||||
}
|
||||
checksize(sz, 2);
|
||||
fit(exp_1.val == 1);
|
||||
emit2((opc&0177700) | mrg_2);
|
||||
ea_2(SIZE_W, MEM|ALT);
|
||||
}
|
||||
|
||||
bitop(opc)
|
||||
{
|
||||
register bits;
|
||||
|
||||
bits = DTA|ALT;
|
||||
if (opc == 0 && (mrg_1 < 010 || mrg_2 != 074))
|
||||
bits = DTA;
|
||||
if (mrg_1 < 010) {
|
||||
emit2(opc | 0400 | mrg_1<<9 | mrg_2);
|
||||
ea_2(0, bits);
|
||||
return;
|
||||
}
|
||||
if (mrg_1 == 074) {
|
||||
emit2(opc | 04000 | mrg_2);
|
||||
ea_1(SIZE_W, 0);
|
||||
ea_2(0, bits);
|
||||
return;
|
||||
}
|
||||
badoperand();
|
||||
}
|
||||
|
||||
add(opc, sz)
|
||||
{
|
||||
if ((mrg_2 & 070) == 010)
|
||||
checksize(sz, 2|4);
|
||||
if (
|
||||
mrg_1 == 074
|
||||
&&
|
||||
small(
|
||||
exp_1.typ==S_ABS && fit3(exp_1.val),
|
||||
sz==SIZE_L ? 4 : 2
|
||||
)
|
||||
) {
|
||||
emit2((opc&0400) | 050000 | low3(exp_1.val)<<9 | sz | mrg_2);
|
||||
ea_2(sz, ALT);
|
||||
return;
|
||||
}
|
||||
if (mrg_1 == 074 && (mrg_2 & 070) != 010) {
|
||||
emit2((opc&03000) | sz | mrg_2);
|
||||
ea_1(sz, 0);
|
||||
ea_2(sz, DTA|ALT);
|
||||
return;
|
||||
}
|
||||
if ((mrg_2 & 070) == 010) {
|
||||
emit2((opc&0170300) | (mrg_2&7)<<9 | sz<<1 | mrg_1);
|
||||
ea_1(sz, 0);
|
||||
return;
|
||||
}
|
||||
if (to_dreg(opc, sz, 0))
|
||||
return;
|
||||
if (from_dreg(opc, sz, ALT|MEM))
|
||||
return;
|
||||
badoperand();
|
||||
}
|
||||
|
||||
and(opc, sz)
|
||||
{
|
||||
if (mrg_1 == 074 && mrg_2 >= 076) { /* ccr or sr */
|
||||
if (sz != SIZE_NON)
|
||||
checksize(sz, mrg_2==076 ? 1 : 2);
|
||||
else
|
||||
sz = (mrg_2==076 ? SIZE_B : SIZE_W);
|
||||
emit2((opc&07400) | sz | 074);
|
||||
ea_1(sz, 0);
|
||||
return;
|
||||
}
|
||||
if (sz == SIZE_NON)
|
||||
sz = SIZE_DEF;
|
||||
if (mrg_1 == 074) {
|
||||
emit2((opc&07400) | sz | mrg_2);
|
||||
ea_1(sz, 0);
|
||||
ea_2(sz, DTA|ALT);
|
||||
return;
|
||||
}
|
||||
if ((opc & 010000) == 0 && to_dreg(opc, sz, DTA))
|
||||
return;
|
||||
if (from_dreg(opc, sz, (opc & 010000) ? DTA|ALT : ALT|MEM))
|
||||
return;
|
||||
badoperand();
|
||||
}
|
||||
|
||||
to_dreg(opc, sz, bits)
|
||||
{
|
||||
if ((mrg_2 & 070) != 000)
|
||||
return(0);
|
||||
emit2((opc & 0170000) | sz | (mrg_2&7)<<9 | mrg_1);
|
||||
ea_1(sz, bits);
|
||||
return(1);
|
||||
}
|
||||
|
||||
from_dreg(opc, sz, bits)
|
||||
{
|
||||
if ((mrg_1 & 070) != 000)
|
||||
return(0);
|
||||
emit2((opc & 0170000) | sz | (mrg_1&7)<<9 | 0400 | mrg_2);
|
||||
ea_2(sz, bits);
|
||||
return(1);
|
||||
}
|
||||
|
||||
cmp(sz)
|
||||
{
|
||||
register opc;
|
||||
|
||||
if ((mrg_1&070) == 030 && (mrg_2&070) == 030) {
|
||||
emit2(0130410 | sz | (mrg_1&7) | (mrg_2&7)<<9);
|
||||
return;
|
||||
}
|
||||
if (mrg_1 == 074 && (mrg_2 & 070) != 010) {
|
||||
emit2(06000 | sz | mrg_2);
|
||||
ea_1(sz, 0);
|
||||
ea_2(sz, DTA|ALT);
|
||||
return;
|
||||
}
|
||||
if (mrg_2 < 020) {
|
||||
if (mrg_2 >= 010) {
|
||||
checksize(sz, 2|4);
|
||||
opc = 0130300 | sz<<1;
|
||||
mrg_2 &= 7;
|
||||
} else
|
||||
opc = 0130000 | sz;
|
||||
emit2(opc | mrg_2<<9 | mrg_1);
|
||||
ea_1(sz, 0);
|
||||
return;
|
||||
}
|
||||
badoperand();
|
||||
}
|
||||
|
||||
move(sz)
|
||||
{
|
||||
register opc;
|
||||
|
||||
if (mrg_1 > 074 || mrg_2 > 074) {
|
||||
move_special(sz);
|
||||
return;
|
||||
}
|
||||
if (sz == SIZE_NON)
|
||||
sz = SIZE_DEF;
|
||||
if (
|
||||
mrg_2<010
|
||||
&&
|
||||
mrg_1==074
|
||||
&&
|
||||
sz==SIZE_L
|
||||
&&
|
||||
small(exp_1.typ==S_ABS && fitb(exp_1.val), 4)
|
||||
) {
|
||||
emit2(070000 | mrg_2<<9 | lowb(exp_1.val));
|
||||
return;
|
||||
}
|
||||
switch (sz) {
|
||||
case SIZE_B: opc = 010000; break;
|
||||
case SIZE_W: opc = 030000; break;
|
||||
case SIZE_L: opc = 020000; break;
|
||||
}
|
||||
emit2(opc | mrg_1 | (mrg_2&7)<<9 | (mrg_2&070)<<3);
|
||||
ea_1(sz, 0);
|
||||
ea_2(sz, ALT);
|
||||
}
|
||||
|
||||
move_special(sz)
|
||||
{
|
||||
if (mrg_2 >= 076) {
|
||||
if (sz != SIZE_NON)
|
||||
checksize(sz, 2);
|
||||
emit2(042300 | (mrg_2==076?0:01000) | mrg_1);
|
||||
ea_1(SIZE_W, DTA);
|
||||
return;
|
||||
}
|
||||
if (mrg_1 >= 076) {
|
||||
if (mrg_1 == 076)
|
||||
test68010();
|
||||
if (sz != SIZE_NON)
|
||||
checksize(sz, 2);
|
||||
emit2(040300 | (mrg_1==076?01000:0) | mrg_2);
|
||||
ea_2(SIZE_W, DTA|ALT);
|
||||
return;
|
||||
}
|
||||
if (sz != SIZE_NON)
|
||||
checksize(sz, 4);
|
||||
if (mrg_1==075 && (mrg_2&070)==010) {
|
||||
emit2(047150 | (mrg_2&7));
|
||||
return;
|
||||
}
|
||||
if (mrg_2==075 && (mrg_1&070)==010) {
|
||||
emit2(047140 | (mrg_1&7));
|
||||
return;
|
||||
}
|
||||
badoperand();
|
||||
}
|
||||
|
||||
movem(dr, sz, regs)
|
||||
{
|
||||
register i;
|
||||
register r;
|
||||
|
||||
if ((mrg_2>>3) == 04) {
|
||||
r = regs; regs = 0;
|
||||
for (i = 0; i < 16; i++) {
|
||||
regs <<= 1;
|
||||
if (r & 1)
|
||||
regs++;
|
||||
r >>= 1;
|
||||
}
|
||||
}
|
||||
checksize(sz, 2|4);
|
||||
if ((mrg_2>>3)-3 == dr)
|
||||
badoperand();
|
||||
emit2(044200 | dr<<10 | (sz & 0200) >> 1 | mrg_2);
|
||||
emit2(regs);
|
||||
i = CTR;
|
||||
if (dr == 0 && (mrg_2&070) == 040)
|
||||
i = MEM;
|
||||
if (dr != 0 && (mrg_2&070) == 030)
|
||||
i = MEM;
|
||||
if (dr == 0)
|
||||
i |= ALT;
|
||||
ea_2(sz, i);
|
||||
}
|
||||
|
||||
movep(sz)
|
||||
{
|
||||
checksize(sz, 2|4);
|
||||
if (mrg_1<010 && (mrg_2&070)==050) {
|
||||
emit2(0610 | (sz & 0200)>>1 | mrg_1<<9 | (mrg_2&7));
|
||||
ea_2(sz, 0);
|
||||
return;
|
||||
}
|
||||
if (mrg_2<010 && (mrg_1&070)==050) {
|
||||
emit2(0410 | (sz & 0200)>>1 | mrg_2<<9 | (mrg_1&7));
|
||||
ea_1(sz, 0);
|
||||
return;
|
||||
}
|
||||
badoperand();
|
||||
}
|
||||
|
||||
branch(opc, exp)
|
||||
expr_t exp;
|
||||
{
|
||||
register sm;
|
||||
|
||||
exp.val -= (DOTVAL + 2);
|
||||
if ((pass == PASS_2)
|
||||
&&
|
||||
(exp.val > 0)
|
||||
&&
|
||||
((exp.typ & S_DOT) == 0)
|
||||
)
|
||||
exp.val -= DOTGAIN;
|
||||
sm = fitb(exp.val);
|
||||
if ((exp.typ & ~S_DOT) != DOTTYP)
|
||||
sm = 0;
|
||||
if (small(sm,2)) {
|
||||
if (exp.val == 0)
|
||||
emit2(047161); /* NOP */
|
||||
else
|
||||
emit2(opc | lowb(exp.val));
|
||||
} else {
|
||||
fit(fitw(exp.val));
|
||||
emit2(opc);
|
||||
#ifdef RELOCATION
|
||||
#ifdef DUK
|
||||
newrelo(exp.typ, RELPC|RELO2|RELBR|RELWR);
|
||||
#else DUK
|
||||
newrelo(exp.typ, RELPC|RELO2);
|
||||
#endif DUK
|
||||
#endif
|
||||
emit2(loww(exp.val));
|
||||
}
|
||||
}
|
||||
|
||||
ea5x73(rg, sz)
|
||||
{
|
||||
if ((exp_2.typ & ~S_DOT) == DOTTYP) {
|
||||
/* pc relative with index */
|
||||
if (sz == SIZE_NON)
|
||||
sz = SIZE_DEF;
|
||||
exp_2.val -= (DOTVAL + 2);
|
||||
mrg_2 = 073;
|
||||
checksize(sz, 2|4);
|
||||
index(rg<<12 | (sz&0200)<<4);
|
||||
return;
|
||||
}
|
||||
/* displacement */
|
||||
mrg_2 = 050 | rg;
|
||||
if (pass == PASS_1) /* tricky, maybe 073 in next passes */
|
||||
return;
|
||||
if ((rg & 010) == 0 || sz != SIZE_NON)
|
||||
badoperand();
|
||||
}
|
||||
|
||||
ea707172(sz)
|
||||
{
|
||||
register sm;
|
||||
|
||||
mrg_2 = 071;
|
||||
switch (sz) {
|
||||
case SIZE_B:
|
||||
badoperand();
|
||||
case SIZE_W:
|
||||
mrg_2 = 070;
|
||||
case SIZE_L:
|
||||
return;
|
||||
case SIZE_NON:
|
||||
break;
|
||||
}
|
||||
if (pass == PASS_1) {
|
||||
/*
|
||||
* reserve a bit in the bittable
|
||||
* in the following passes one call to small()
|
||||
* will be done, but we don't know which one
|
||||
* since exp_2.typ cannot be trusted
|
||||
*/
|
||||
small(0, 2);
|
||||
return;
|
||||
}
|
||||
if ((exp_2.typ & ~S_DOT) == DOTTYP) {
|
||||
sm = fitw(exp_2.val-(DOTVAL+2));
|
||||
sm = small(sm, 2);
|
||||
if (sm) { /* pc relative */
|
||||
exp_2.val -= (DOTVAL+2);
|
||||
mrg_2 = 072;
|
||||
}
|
||||
} else {
|
||||
sm = fitw(exp_2.val);
|
||||
#ifdef ASLD
|
||||
if (exp_2.typ & S_VAR)
|
||||
sm = 0;
|
||||
#else
|
||||
if (exp_2.typ != S_ABS)
|
||||
sm = 0;
|
||||
#endif ASLD
|
||||
sm = small(sm, 2);
|
||||
if (sm)
|
||||
mrg_2 = 070;
|
||||
}
|
||||
}
|
||||
|
||||
ea6x(rg, ir, sz)
|
||||
{
|
||||
mrg_2 = 060 | rg;
|
||||
checksize(sz, 2|4);
|
||||
index(ir<<12 | (sz&0200)<<4);
|
||||
}
|
||||
|
||||
ea72()
|
||||
{
|
||||
mrg_2 = 072;
|
||||
exp_2.val -= (DOTVAL + 2);
|
||||
}
|
||||
|
||||
ea73(ri, sz)
|
||||
{
|
||||
mrg_2 = 073;
|
||||
exp_2.val -= (DOTVAL + 2);
|
||||
checksize(sz, 2|4);
|
||||
index(ri<<12 | (sz&0200)<<4);
|
||||
}
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
|
@ -6,14 +6,14 @@ CPP = $(EM)/lib/cpp
|
|||
DEF =
|
||||
|
||||
FFLAG =
|
||||
CFLAGS = $(FFLAG) -O -I$h $(DEF)
|
||||
CFLAGS = $(FFLAG) -O -I. -I$h $(DEF)
|
||||
YFLAGS = -d
|
||||
LDFLAGS = $(FFLAG) -i
|
||||
|
||||
CSRC = $(CDIR)/comm3.c $(CDIR)/comm4.c $(CDIR)/comm5.c \
|
||||
$(CDIR)/comm6.c $(CDIR)/comm7.c $(CDIR)/comm8.c
|
||||
COBJ = $(CDIR)/comm3.o $(CDIR)/comm4.o $(CDIR)/comm5.o \
|
||||
$(CDIR)/comm6.o $(CDIR)/comm7.o $(CDIR)/comm8.o
|
||||
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)
|
||||
|
||||
|
@ -37,7 +37,7 @@ as: $(COBJ) as.o
|
|||
$(CC) $(LDFLAGS) $(COBJ) as.o -o as
|
||||
|
||||
as.y: $(CDIR)/comm2.y
|
||||
$(CPP) -P -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
$(CPP) -P -I. -I$h $(DEF) $(CDIR)/comm2.y >as.y
|
||||
@echo "expect 1 shift/reduce conflict"
|
||||
|
||||
lint: $(CSRC) as.c
|
||||
|
@ -51,3 +51,15 @@ 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
|
||||
|
|
600
util/led/READ_ME
Normal file
600
util/led/READ_ME
Normal file
|
@ -0,0 +1,600 @@
|
|||
You may want to change mach.c in this directory.
|
||||
|
||||
Archives MUST have a table of contents. Arch in subdirectory arch
|
||||
automatically makes one when you change an archive.
|
||||
|
||||
Several changes in the assembler were needed to have it generate the
|
||||
necessary output.
|
||||
A contextual diff follows. You can apply them as follows:
|
||||
patch -d /usr/em/philips/mach/68000/as < READ_ME
|
||||
|
||||
*** comm0.h.old Thu Dec 6 16:18:39 1984
|
||||
--- comm0.h Thu Dec 6 17:49:51 1984
|
||||
***************
|
||||
*** 213,218
|
||||
|
||||
/*
|
||||
* extra type bits out of S_ETC, internal use only
|
||||
* S_COM:
|
||||
* - symbols declared by .comm
|
||||
* S_VAR:
|
||||
|
||||
--- 213,219 -----
|
||||
|
||||
/*
|
||||
* extra type bits out of S_ETC, internal use only
|
||||
+ #ifndef DUK
|
||||
* S_COM:
|
||||
* - symbols declared by .comm
|
||||
#endif DUK
|
||||
***************
|
||||
*** 215,220
|
||||
* extra type bits out of S_ETC, internal use only
|
||||
* S_COM:
|
||||
* - symbols declared by .comm
|
||||
* S_VAR:
|
||||
* - type not known at end of PASS_1 (S_VAR|S_UND)
|
||||
* - value not known at end of PASS_2 (S_VAR|S_ABS)
|
||||
|
||||
--- 216,222 -----
|
||||
#ifndef DUK
|
||||
* S_COM:
|
||||
* - symbols declared by .comm
|
||||
+ #endif DUK
|
||||
* S_VAR:
|
||||
* - type not known at end of PASS_1 (S_VAR|S_UND)
|
||||
* - value not known at end of PASS_2 (S_VAR|S_ABS)
|
||||
***************
|
||||
*** 221,226
|
||||
* S_DOT:
|
||||
* - dot expression
|
||||
*/
|
||||
#define S_COM 0x0100
|
||||
#define S_VAR 0x0200
|
||||
#define S_DOT 0x0400
|
||||
|
||||
--- 223,229 -----
|
||||
* S_DOT:
|
||||
* - dot expression
|
||||
*/
|
||||
+ #ifndef DUK
|
||||
#define S_COM 0x0100
|
||||
#endif DUK
|
||||
#define S_VAR 0x0200
|
||||
***************
|
||||
*** 222,227
|
||||
* - dot expression
|
||||
*/
|
||||
#define S_COM 0x0100
|
||||
#define S_VAR 0x0200
|
||||
#define S_DOT 0x0400
|
||||
/* should be tested by preprocessor
|
||||
|
||||
--- 225,231 -----
|
||||
*/
|
||||
#ifndef DUK
|
||||
#define S_COM 0x0100
|
||||
+ #endif DUK
|
||||
#define S_VAR 0x0200
|
||||
#define S_DOT 0x0400
|
||||
/* should be tested by preprocessor
|
||||
*** comm2.y.old Thu Dec 6 16:19:07 1984
|
||||
--- comm2.y Thu Dec 6 16:02:19 1984
|
||||
***************
|
||||
*** 229,234
|
||||
{
|
||||
#ifdef RELOCATION
|
||||
if (rflag != 0 && PASS_RELO)
|
||||
newrelo($1.typ, (int)$<y_word>0);
|
||||
#endif
|
||||
emitx($1.val, (int)$<y_word>0);
|
||||
|
||||
--- 229,239 -----
|
||||
{
|
||||
#ifdef RELOCATION
|
||||
if (rflag != 0 && PASS_RELO)
|
||||
+ #ifdef DUK
|
||||
+ newrelo($1.typ,
|
||||
+ (int)$<y_word>0 | RELBR | RELWR
|
||||
+ );
|
||||
+ #else DUK
|
||||
newrelo($1.typ, (int)$<y_word>0);
|
||||
#endif DUK
|
||||
#endif
|
||||
***************
|
||||
*** 230,235
|
||||
#ifdef RELOCATION
|
||||
if (rflag != 0 && PASS_RELO)
|
||||
newrelo($1.typ, (int)$<y_word>0);
|
||||
#endif
|
||||
emitx($1.val, (int)$<y_word>0);
|
||||
}
|
||||
|
||||
--- 235,241 -----
|
||||
);
|
||||
#else DUK
|
||||
newrelo($1.typ, (int)$<y_word>0);
|
||||
+ #endif DUK
|
||||
#endif
|
||||
emitx($1.val, (int)$<y_word>0);
|
||||
}
|
||||
***************
|
||||
*** 237,242
|
||||
{
|
||||
#ifdef RELOCATION
|
||||
if (rflag != 0 && PASS_RELO)
|
||||
newrelo($3.typ, (int)$<y_word>0);
|
||||
#endif
|
||||
emitx($3.val, (int)$<y_word>0);
|
||||
|
||||
--- 243,253 -----
|
||||
{
|
||||
#ifdef RELOCATION
|
||||
if (rflag != 0 && PASS_RELO)
|
||||
+ #ifdef DUK
|
||||
+ newrelo($3.typ,
|
||||
+ (int)$<y_word>0 | RELBR | RELWR
|
||||
+ );
|
||||
+ #else DUK
|
||||
newrelo($3.typ, (int)$<y_word>0);
|
||||
#endif DUK
|
||||
#endif
|
||||
***************
|
||||
*** 238,243
|
||||
#ifdef RELOCATION
|
||||
if (rflag != 0 && PASS_RELO)
|
||||
newrelo($3.typ, (int)$<y_word>0);
|
||||
#endif
|
||||
emitx($3.val, (int)$<y_word>0);
|
||||
}
|
||||
|
||||
--- 249,255 -----
|
||||
);
|
||||
#else DUK
|
||||
newrelo($3.typ, (int)$<y_word>0);
|
||||
+ #endif DUK
|
||||
#endif
|
||||
emitx($3.val, (int)$<y_word>0);
|
||||
}
|
||||
*** comm3.c.old Wed Jul 11 09:22:24 1984
|
||||
--- comm3.c Fri Dec 7 13:06:26 1984
|
||||
***************
|
||||
*** 11,16
|
||||
|
||||
struct outhead outhead = {
|
||||
O_MAGIC, O_STAMP, 0
|
||||
#ifdef BYTES_REVERSED
|
||||
| HF_BREV
|
||||
#endif
|
||||
|
||||
--- 11,17 -----
|
||||
|
||||
struct outhead outhead = {
|
||||
O_MAGIC, O_STAMP, 0
|
||||
+ #ifndef DUK
|
||||
#ifdef BYTES_REVERSED
|
||||
| HF_BREV
|
||||
#endif
|
||||
***************
|
||||
*** 17,22
|
||||
#ifdef WORDS_REVERSED
|
||||
| HF_WREV
|
||||
#endif
|
||||
};
|
||||
|
||||
#include "y.tab.h"
|
||||
|
||||
--- 18,24 -----
|
||||
#ifdef WORDS_REVERSED
|
||||
| HF_WREV
|
||||
#endif
|
||||
+ #endif DUK
|
||||
};
|
||||
|
||||
#include "y.tab.h"
|
||||
*** comm5.c.old Thu Dec 6 16:19:40 1984
|
||||
--- comm5.c Thu Oct 11 14:03:27 1984
|
||||
***************
|
||||
*** 162,167
|
||||
#endif
|
||||
case STRING:
|
||||
p = stringbuf;
|
||||
*p++ = n = getc(tempfile); break;
|
||||
case OP_EQ:
|
||||
case OP_NE:
|
||||
|
||||
--- 162,172 -----
|
||||
#endif
|
||||
case STRING:
|
||||
p = stringbuf;
|
||||
+ #ifdef DUK
|
||||
+ *p++ = n = getc(tempfile);
|
||||
+ p[n] = '\0';
|
||||
+ break;
|
||||
+ #else DUK
|
||||
*p++ = n = getc(tempfile); break;
|
||||
#endif DUK
|
||||
case OP_EQ:
|
||||
***************
|
||||
*** 163,168
|
||||
case STRING:
|
||||
p = stringbuf;
|
||||
*p++ = n = getc(tempfile); break;
|
||||
case OP_EQ:
|
||||
case OP_NE:
|
||||
case OP_LE:
|
||||
|
||||
--- 168,174 -----
|
||||
break;
|
||||
#else DUK
|
||||
*p++ = n = getc(tempfile); break;
|
||||
+ #endif DUK
|
||||
case OP_EQ:
|
||||
case OP_NE:
|
||||
case OP_LE:
|
||||
***************
|
||||
*** 354,359
|
||||
break;
|
||||
if (c == '\\')
|
||||
c = inescape();
|
||||
if (p >= &stringbuf[STRINGMAX])
|
||||
fatal("string buffer overflow");
|
||||
*p++ = c;
|
||||
|
||||
--- 360,368 -----
|
||||
break;
|
||||
if (c == '\\')
|
||||
c = inescape();
|
||||
+ #ifdef DUK
|
||||
+ if (p >= &stringbuf[STRINGMAX - 1])
|
||||
+ #else DUK
|
||||
if (p >= &stringbuf[STRINGMAX])
|
||||
#endif DUK
|
||||
fatal("string buffer overflow");
|
||||
***************
|
||||
*** 355,360
|
||||
if (c == '\\')
|
||||
c = inescape();
|
||||
if (p >= &stringbuf[STRINGMAX])
|
||||
fatal("string buffer overflow");
|
||||
*p++ = c;
|
||||
}
|
||||
|
||||
--- 364,370 -----
|
||||
if (p >= &stringbuf[STRINGMAX - 1])
|
||||
#else DUK
|
||||
if (p >= &stringbuf[STRINGMAX])
|
||||
+ #endif DUK
|
||||
fatal("string buffer overflow");
|
||||
*p++ = c;
|
||||
}
|
||||
***************
|
||||
*** 359,364
|
||||
*p++ = c;
|
||||
}
|
||||
stringbuf[0] = p - stringbuf - 1;
|
||||
return(STRING);
|
||||
}
|
||||
|
||||
|
||||
--- 369,377 -----
|
||||
*p++ = c;
|
||||
}
|
||||
stringbuf[0] = p - stringbuf - 1;
|
||||
+ #ifdef DUK
|
||||
+ *p = '\0';
|
||||
+ #endif DUK
|
||||
return(STRING);
|
||||
}
|
||||
|
||||
*** comm6.c.old Thu Dec 6 16:20:22 1984
|
||||
--- comm6.c Wed Oct 3 15:59:31 1984
|
||||
***************
|
||||
*** 106,111
|
||||
sp = §[typ - S_MIN];
|
||||
sp->s_item = ip;
|
||||
sp->s_lign = ALIGNSECT;
|
||||
ip->i_type = typ | S_EXT;
|
||||
ip->i_valu = 0;
|
||||
} else if (typ >= S_MIN) {
|
||||
|
||||
--- 106,114 -----
|
||||
sp = §[typ - S_MIN];
|
||||
sp->s_item = ip;
|
||||
sp->s_lign = ALIGNSECT;
|
||||
+ #ifdef DUK
|
||||
+ ip->i_type = typ;
|
||||
+ #else DUK
|
||||
ip->i_type = typ | S_EXT;
|
||||
#endif DUK
|
||||
ip->i_valu = 0;
|
||||
***************
|
||||
*** 107,112
|
||||
sp->s_item = ip;
|
||||
sp->s_lign = ALIGNSECT;
|
||||
ip->i_type = typ | S_EXT;
|
||||
ip->i_valu = 0;
|
||||
} else if (typ >= S_MIN) {
|
||||
sp = §[typ - S_MIN];
|
||||
|
||||
--- 110,116 -----
|
||||
ip->i_type = typ;
|
||||
#else DUK
|
||||
ip->i_type = typ | S_EXT;
|
||||
+ #endif DUK
|
||||
ip->i_valu = 0;
|
||||
} else if (typ >= S_MIN) {
|
||||
sp = §[typ - S_MIN];
|
||||
***************
|
||||
*** 180,185
|
||||
* for possible relocation
|
||||
*/
|
||||
ip->i_valu = outhead.oh_nname;
|
||||
newsymb(ip->i_name, S_EXT|DOTTYP, (short)0, val);
|
||||
#endif
|
||||
}
|
||||
|
||||
--- 184,192 -----
|
||||
* for possible relocation
|
||||
*/
|
||||
ip->i_valu = outhead.oh_nname;
|
||||
+ #ifdef DUK
|
||||
+ newsymb(ip->i_name, S_COM|S_EXT|DOTTYP, (short)0, val);
|
||||
+ #else DUK
|
||||
newsymb(ip->i_name, S_EXT|DOTTYP, (short)0, val);
|
||||
#endif DUK
|
||||
#endif
|
||||
***************
|
||||
*** 181,186
|
||||
*/
|
||||
ip->i_valu = outhead.oh_nname;
|
||||
newsymb(ip->i_name, S_EXT|DOTTYP, (short)0, val);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
--- 188,194 -----
|
||||
newsymb(ip->i_name, S_COM|S_EXT|DOTTYP, (short)0, val);
|
||||
#else DUK
|
||||
newsymb(ip->i_name, S_EXT|DOTTYP, (short)0, val);
|
||||
+ #endif DUK
|
||||
#endif
|
||||
}
|
||||
|
||||
***************
|
||||
*** 255,260
|
||||
short s;
|
||||
{
|
||||
struct outrelo outrelo;
|
||||
|
||||
if (rflag == 0)
|
||||
return;
|
||||
|
||||
--- 263,271 -----
|
||||
short s;
|
||||
{
|
||||
struct outrelo outrelo;
|
||||
+ #ifdef DUK
|
||||
+ int iscomm;
|
||||
+ #endif DUK
|
||||
|
||||
if (rflag == 0)
|
||||
return;
|
||||
***************
|
||||
*** 272,277
|
||||
* b=a
|
||||
* a: .data2 0
|
||||
*/
|
||||
s &= ~S_COM;
|
||||
if ((n & RELPC) == 0 && s == S_ABS)
|
||||
return;
|
||||
|
||||
--- 283,291 -----
|
||||
* b=a
|
||||
* a: .data2 0
|
||||
*/
|
||||
+ #ifdef DUK
|
||||
+ iscomm = s & S_COM;
|
||||
+ #endif DUK
|
||||
s &= ~S_COM;
|
||||
if ((n & RELPC) == 0 && s == S_ABS)
|
||||
return;
|
||||
***************
|
||||
*** 285,290
|
||||
outrelo.or_type = (char)n;
|
||||
outrelo.or_sect = (char)DOTTYP;
|
||||
#ifndef ASLD
|
||||
if (s == S_UND) {
|
||||
assert(relonami != 0);
|
||||
outrelo.or_nami = relonami-1;
|
||||
|
||||
--- 299,307 -----
|
||||
outrelo.or_type = (char)n;
|
||||
outrelo.or_sect = (char)DOTTYP;
|
||||
#ifndef ASLD
|
||||
+ #ifdef DUK
|
||||
+ if (s == S_UND || iscomm) {
|
||||
+ #else DUK
|
||||
if (s == S_UND) {
|
||||
#endif DUK
|
||||
assert(relonami != 0);
|
||||
***************
|
||||
*** 286,291
|
||||
outrelo.or_sect = (char)DOTTYP;
|
||||
#ifndef ASLD
|
||||
if (s == S_UND) {
|
||||
assert(relonami != 0);
|
||||
outrelo.or_nami = relonami-1;
|
||||
relonami = 0;
|
||||
|
||||
--- 303,309 -----
|
||||
if (s == S_UND || iscomm) {
|
||||
#else DUK
|
||||
if (s == S_UND) {
|
||||
+ #endif DUK
|
||||
assert(relonami != 0);
|
||||
outrelo.or_nami = relonami-1;
|
||||
relonami = 0;
|
||||
*** comm7.c.old Thu Dec 6 16:20:50 1984
|
||||
--- comm7.c Wed Oct 3 16:35:31 1984
|
||||
***************
|
||||
*** 19,24
|
||||
return(ip->i_valu);
|
||||
return(ip->i_valu + sect[typ].s_base);
|
||||
#else
|
||||
if ((ip->i_type & S_TYP) == S_UND) {
|
||||
if (pass == PASS_3) {
|
||||
if (relonami != 0)
|
||||
|
||||
--- 19,27 -----
|
||||
return(ip->i_valu);
|
||||
return(ip->i_valu + sect[typ].s_base);
|
||||
#else
|
||||
+ #ifdef DUK
|
||||
+ if ((ip->i_type & S_TYP) == S_UND || (ip->i_type & S_COM)) {
|
||||
+ #else DUK
|
||||
if ((ip->i_type & S_TYP) == S_UND) {
|
||||
#endif DUK
|
||||
if (pass == PASS_3) {
|
||||
***************
|
||||
*** 20,25
|
||||
return(ip->i_valu + sect[typ].s_base);
|
||||
#else
|
||||
if ((ip->i_type & S_TYP) == S_UND) {
|
||||
if (pass == PASS_3) {
|
||||
if (relonami != 0)
|
||||
serror("relocation error");
|
||||
|
||||
--- 23,29 -----
|
||||
if ((ip->i_type & S_TYP) == S_UND || (ip->i_type & S_COM)) {
|
||||
#else DUK
|
||||
if ((ip->i_type & S_TYP) == S_UND) {
|
||||
+ #endif DUK
|
||||
if (pass == PASS_3) {
|
||||
if (relonami != 0)
|
||||
serror("relocation error");
|
||||
*** mach0.c.old Thu Dec 6 16:21:11 1984
|
||||
--- mach0.c Fri Sep 14 14:15:54 1984
|
||||
***************
|
||||
*** 1,3
|
||||
/* @(#)mach0.c 1.5 */
|
||||
/*
|
||||
* Motorola 68000/68010 options
|
||||
|
||||
--- 1,4 -----
|
||||
+ #define DUK
|
||||
/* @(#)mach0.c 1.5 */
|
||||
/*
|
||||
* Motorola 68000/68010 options
|
||||
*** mach4.c.old Thu Dec 6 16:21:30 1984
|
||||
--- mach4.c Thu Dec 6 16:05:00 1984
|
||||
***************
|
||||
*** 21,26
|
||||
fit(fitw($4.val));
|
||||
emit2($1 | $2);
|
||||
#ifdef RELOCATION
|
||||
newrelo($4.typ, RELPC|RELO2);
|
||||
#endif
|
||||
emit2(loww($4.val));
|
||||
|
||||
--- 21,29 -----
|
||||
fit(fitw($4.val));
|
||||
emit2($1 | $2);
|
||||
#ifdef RELOCATION
|
||||
+ #ifdef DUK
|
||||
+ newrelo($4.typ, RELPC|RELO2|RELBR|RELWR);
|
||||
+ #else DUK
|
||||
newrelo($4.typ, RELPC|RELO2);
|
||||
#endif DUK
|
||||
#endif
|
||||
***************
|
||||
*** 22,27
|
||||
emit2($1 | $2);
|
||||
#ifdef RELOCATION
|
||||
newrelo($4.typ, RELPC|RELO2);
|
||||
#endif
|
||||
emit2(loww($4.val));
|
||||
}
|
||||
|
||||
--- 25,31 -----
|
||||
newrelo($4.typ, RELPC|RELO2|RELBR|RELWR);
|
||||
#else DUK
|
||||
newrelo($4.typ, RELPC|RELO2);
|
||||
+ #endif DUK
|
||||
#endif
|
||||
emit2(loww($4.val));
|
||||
}
|
||||
*** mach5.c.old Thu Dec 6 16:21:54 1984
|
||||
--- mach5.c Thu Dec 6 16:07:05 1984
|
||||
***************
|
||||
*** 37,42
|
||||
#ifdef RELOCATION
|
||||
RELOMOVE(relonami, rel_1);
|
||||
if (flag & ~0xFF)
|
||||
newrelo(exp_1.typ, flag>>8);
|
||||
#endif
|
||||
if (flag & PUTL)
|
||||
|
||||
--- 37,45 -----
|
||||
#ifdef RELOCATION
|
||||
RELOMOVE(relonami, rel_1);
|
||||
if (flag & ~0xFF)
|
||||
+ #ifdef DUK
|
||||
+ newrelo(exp_1.typ, (flag>>8) | RELBR | RELWR);
|
||||
+ #else DUK
|
||||
newrelo(exp_1.typ, flag>>8);
|
||||
#endif DUK
|
||||
#endif
|
||||
***************
|
||||
*** 38,43
|
||||
RELOMOVE(relonami, rel_1);
|
||||
if (flag & ~0xFF)
|
||||
newrelo(exp_1.typ, flag>>8);
|
||||
#endif
|
||||
if (flag & PUTL)
|
||||
emit4(exp_1.val);
|
||||
|
||||
--- 41,47 -----
|
||||
newrelo(exp_1.typ, (flag>>8) | RELBR | RELWR);
|
||||
#else DUK
|
||||
newrelo(exp_1.typ, flag>>8);
|
||||
+ #endif DUK
|
||||
#endif
|
||||
if (flag & PUTL)
|
||||
emit4(exp_1.val);
|
||||
***************
|
||||
*** 357,362
|
||||
fit(fitw(exp.val));
|
||||
emit2(opc);
|
||||
#ifdef RELOCATION
|
||||
newrelo(exp.typ, RELPC|RELO2);
|
||||
#endif
|
||||
emit2(loww(exp.val));
|
||||
|
||||
--- 361,369 -----
|
||||
fit(fitw(exp.val));
|
||||
emit2(opc);
|
||||
#ifdef RELOCATION
|
||||
+ #ifdef DUK
|
||||
+ newrelo(exp.typ, RELPC|RELO2|RELBR|RELWR);
|
||||
+ #else DUK
|
||||
newrelo(exp.typ, RELPC|RELO2);
|
||||
#endif DUK
|
||||
#endif
|
||||
***************
|
||||
*** 358,363
|
||||
emit2(opc);
|
||||
#ifdef RELOCATION
|
||||
newrelo(exp.typ, RELPC|RELO2);
|
||||
#endif
|
||||
emit2(loww(exp.val));
|
||||
}
|
||||
|
||||
--- 365,371 -----
|
||||
newrelo(exp.typ, RELPC|RELO2|RELBR|RELWR);
|
||||
#else DUK
|
||||
newrelo(exp.typ, RELPC|RELO2);
|
||||
+ #endif DUK
|
||||
#endif
|
||||
emit2(loww(exp.val));
|
||||
}
|
72
util/led/WRONG
Normal file
72
util/led/WRONG
Normal file
|
@ -0,0 +1,72 @@
|
|||
This file contains a summary of the bugs/features/inconsistencies
|
||||
Robbert and Ed found while making the linker usable for the 68000 and amoeba.
|
||||
|
||||
There is something wrong with the way the combination of
|
||||
assembler and linker handle bss.
|
||||
In the original (Duk's) the assembler translated .space and, worse, .align
|
||||
to a sequence of zero's. If this sequence was at the end of a segment
|
||||
within a module the assembler didn't put zero in the segment but sets
|
||||
os_flen to the amount of space initialized before the zero space
|
||||
and os_size to the segements size. (os_size - os_flen) is then the
|
||||
size of the space filled by zeroes.
|
||||
For the sake of clarity, let us call 0...os_flen-1 initialized space
|
||||
and os_flen..os_size-1 uninitialized space.
|
||||
Now the linker, it does a nasty trick. It gathers the uninitialized space
|
||||
of all modules within a segment and puts it consequtively at the end
|
||||
of the segment. I think that I understand the reason: This way you can keep
|
||||
your resultant a.out smaller and you don't need a special bss segment
|
||||
(a la unix). But it is incorrect, the net effect is that the .align's
|
||||
at the end of segments within a module do have the desired effect,
|
||||
the space thus allocated is removed to 'higher spheres' thereby
|
||||
leaving the first items of that segment in the inmediatly following
|
||||
modules at unaligned boundaries.
|
||||
What should be done is that the linker leaves the initialized and
|
||||
the unitialized code alone and regards the whole a a chunk that can be
|
||||
relocated. Only producing a difference of os_size and os_flen for
|
||||
the zeroes at the very end of the segment. Thereby collapsing all
|
||||
.space (and .align) commands into zero space only if they
|
||||
are in consequtive modules at the end of the segment, with modules
|
||||
NOT containing any initialized data.
|
||||
I already, ad-hoc, changed the code of the assembler to producing 'hard'
|
||||
zeroes when aligning. The trick could also be done for .space
|
||||
but is a bit harder here.
|
||||
The reason: .space is also used to allocate space in the BSS segment
|
||||
if that produced zeroes in the a.out file (0..bss_size) we would
|
||||
have a.out files that are far too large.
|
||||
This feature of the linker also caused weird effects for names that
|
||||
are defined as the very last in a section within a module, without
|
||||
any data (initialized or uninitialezed) after it.
|
||||
The names a regarded as pointing into the uninitialized space and
|
||||
thus relocated to the end of the section.
|
||||
The sequence
|
||||
.sect .data
|
||||
begdata:
|
||||
.sect ....
|
||||
in an head_em.s resulted in the relocation of begdata to the END
|
||||
of the .data segment.
|
||||
|
||||
Another problem form the commons:
|
||||
1 - Local commons are not handled by led and not produced by as.
|
||||
using .comm for unitialized data is not correct because (from C)
|
||||
two uninitialized static declarations for the same name in
|
||||
different modules will be handled as external commons and thus
|
||||
be overlayed.
|
||||
2 - The commons are allocated at the very end of the first pass, after the
|
||||
initialezed data has been allocated in the segments. The order on which
|
||||
the commons are allocated seems to be random. That way it is impossible
|
||||
to produce a label that is guaranteed to point to the last byte (+1)
|
||||
of a segment containing commons.
|
||||
The currently used trick is to declare an extra segment after the
|
||||
segment containing the commons. The first bytre in this segment
|
||||
inmediatly follows the commons and can be used as _end or endbss.
|
||||
|
||||
The archiver (aal) with the automatic ranlib is buggy.
|
||||
The only thing that seems to work at the moment is creation of a fresh
|
||||
archive.
|
||||
replacing/adding/deleting modules is likely to produce libraries
|
||||
with incorrect ranlib entries.
|
||||
The major troublemaker seems to be the extra padding byte at the end
|
||||
of odd sized modules.
|
||||
|
||||
Led should return a non-zero value when it has found Undefined symbols
|
||||
or has another reason for not being able to produce a correct output file.
|
23
util/led/makedepend
Executable file
23
util/led/makedepend
Executable file
|
@ -0,0 +1,23 @@
|
|||
: 'Without arguments, this program clears the dependencies between'
|
||||
: '.o files and included files in Makefile.'
|
||||
: 'With arguments, it replaces the dependencies between the .o files'
|
||||
: 'resulting from the argument files, and the included files in Makefile.'
|
||||
: 'Makefile must contain a line with on it the pattern AUTOAUTOAUTO.'
|
||||
: 'WARNING: a temporary file is created in the current directory.'
|
||||
: 'It is however rather unlikely that this file already exists'
|
||||
grep -s AUTOAUTOAUTO Makefile || {
|
||||
echo "Makefile has wrong format." 1>&2
|
||||
exit 1
|
||||
}
|
||||
for file do
|
||||
ofile=`echo $file | sed 's/.$/o/'`
|
||||
grep '^# *include.*"' $file | sed "s/.*\"\(.*\)\".*/$ofile: \1/"
|
||||
done | sort -u > @@**##$$
|
||||
echo "Non-empty line." >> Makefile
|
||||
ed - Makefile <<'!'
|
||||
/AUTOAUTOAUTO/+,$d
|
||||
w
|
||||
q
|
||||
!
|
||||
cat @@**##$$ >> Makefile
|
||||
rm -f @@**##$$
|
Loading…
Reference in a new issue