added stackheight message handling
This commit is contained in:
		
							parent
							
								
									adfec1c0ef
								
							
						
					
					
						commit
						4ef2c70ed3
					
				
					 28 changed files with 321 additions and 60 deletions
				
			
		|  | @ -16,11 +16,11 @@ 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)/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 | ||||
|        $(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 | ||||
|  | @ -43,6 +43,8 @@ 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 | ||||
|  | @ -97,6 +99,7 @@ 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 | ||||
|  | @ -130,6 +133,10 @@ 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 | ||||
|  |  | |||
|  | @ -16,11 +16,11 @@ 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)/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 | ||||
|        $(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 | ||||
|  | @ -43,6 +43,8 @@ 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 | ||||
|  | @ -97,6 +99,7 @@ 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 | ||||
|  | @ -130,6 +133,10 @@ 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 | ||||
|  |  | |||
|  | @ -16,11 +16,11 @@ 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)/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 | ||||
|        $(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 | ||||
|  | @ -43,6 +43,8 @@ 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 | ||||
|  | @ -97,6 +99,7 @@ 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 | ||||
|  | @ -130,6 +133,10 @@ 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 | ||||
|  |  | |||
|  | @ -16,11 +16,11 @@ 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)/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 | ||||
|        $(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 | ||||
|  | @ -43,6 +43,8 @@ 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 | ||||
|  | @ -97,6 +99,7 @@ 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 | ||||
|  | @ -130,6 +133,10 @@ 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 | ||||
|  |  | |||
|  | @ -16,11 +16,11 @@ 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)/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 | ||||
|        $(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 | ||||
|  | @ -43,6 +43,8 @@ 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 | ||||
|  | @ -97,6 +99,7 @@ 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 | ||||
|  | @ -130,6 +133,10 @@ 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 | ||||
|  |  | |||
|  | @ -16,11 +16,11 @@ 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)/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 | ||||
|        $(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 | ||||
|  | @ -43,6 +43,8 @@ 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 | ||||
|  | @ -97,6 +99,7 @@ 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 | ||||
|  | @ -130,6 +133,10 @@ 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 | ||||
|  |  | |||
|  | @ -16,11 +16,11 @@ 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)/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 | ||||
|        $(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 | ||||
|  | @ -43,6 +43,8 @@ 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 | ||||
|  | @ -97,6 +99,7 @@ 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 | ||||
|  | @ -130,6 +133,10 @@ 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 | ||||
|  |  | |||
|  | @ -16,11 +16,11 @@ 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)/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 | ||||
|        $(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 | ||||
|  | @ -43,6 +43,8 @@ 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 | ||||
|  | @ -97,6 +99,7 @@ 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 | ||||
|  | @ -130,6 +133,10 @@ 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 | ||||
|  |  | |||
|  | @ -16,11 +16,11 @@ 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)/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 | ||||
|        $(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 | ||||
|  | @ -43,6 +43,8 @@ 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 | ||||
|  | @ -97,6 +99,7 @@ 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 | ||||
|  | @ -130,6 +133,10 @@ 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 | ||||
|  |  | |||
|  | @ -16,11 +16,11 @@ 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)/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 | ||||
|        $(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 | ||||
|  | @ -43,6 +43,8 @@ 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 | ||||
|  | @ -97,6 +99,7 @@ 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 | ||||
|  | @ -130,6 +133,10 @@ 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 | ||||
|  |  | |||
|  | @ -16,11 +16,11 @@ 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)/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 | ||||
|        $(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 | ||||
|  | @ -43,6 +43,8 @@ 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 | ||||
|  | @ -97,6 +99,7 @@ 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 | ||||
|  | @ -130,6 +133,10 @@ 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 | ||||
|  |  | |||
|  | @ -849,6 +849,19 @@ normalfailed:	if (stackpad!=tokpatlen) { | |||
| 	level--; | ||||
| #endif | ||||
| 	return(totalcost); | ||||
| #ifdef USE_SHC | ||||
|     case DO_LABDEF: { | ||||
| 	int index; | ||||
| 
 | ||||
| 	DEBUG("LABDEF"); | ||||
| 	if (toplevel) { | ||||
| 		getint(index,codep); | ||||
| 		printlabel(index); | ||||
| 	} | ||||
| 
 | ||||
| 	break; | ||||
|     } | ||||
| #endif | ||||
| 	} | ||||
| 	} | ||||
|     doreturn: | ||||
|  |  | |||
|  | @ -11,6 +11,10 @@ static char rcsid[] = "$Header$"; | |||
| #include "result.h" | ||||
| #include "glosym.h" | ||||
| #include "extern.h" | ||||
| #ifdef	USE_SHC | ||||
| #include <stdio.h> | ||||
| #include "label.h" | ||||
| #endif | ||||
| 
 | ||||
| /*
 | ||||
|  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands. | ||||
|  | @ -72,6 +76,10 @@ char opdesc[] = { | |||
| 	LLDEF|RLDEF,		/* EX_XOR */ | ||||
| 	LLDEF|RLDEF,		/* EX_AND */ | ||||
| 	0,			/* EX_ISROM */ | ||||
| #ifdef USE_SHC | ||||
| 	0,			/* EX_STACKHEIGHT */ | ||||
| 	0,			/* EX_FALLTHROUGH */ | ||||
| #endif | ||||
| }; | ||||
| 
 | ||||
| string salloc(),strcpy(),strcat(); | ||||
|  | @ -376,5 +384,27 @@ result_t compute(node) register node_p node; { | |||
| 	assert(leaf1.e_typ == EV_INT); | ||||
| 		result.e_v.e_con = -leaf1.e_v.e_con; | ||||
| 		return(result); | ||||
| #ifdef USE_SHC | ||||
| 	case EX_STACKHEIGHT:			/* Hans, new */ | ||||
| 	    { register label_p lbl; | ||||
| 
 | ||||
| 		lbl = get_label(saveemp[node->ex_lnode].em_u.em_ioper); | ||||
| 		if (lbl != NULL) { | ||||
| 		    result.e_v.e_con = lbl->lb_height; | ||||
| 		} else { | ||||
| 		    result.e_v.e_con = 0; | ||||
| 		} | ||||
| 		return(result); | ||||
| 	    } | ||||
| 	case EX_FALLTHROUGH:			/* Hans, new */ | ||||
| 	    { register label_p lbl; | ||||
| 
 | ||||
| 		lbl = get_label(saveemp[node->ex_lnode].em_u.em_ioper); | ||||
| 		if (lbl != NULL) { | ||||
| 		    result.e_v.e_con = lbl->lb_fallthrough; | ||||
| 		} else result.e_v.e_con = 0; | ||||
| 		return(result); | ||||
| 	    } | ||||
| #endif | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -127,6 +127,13 @@ fillemlines() { | |||
| 			error("unknown instruction byte"); | ||||
| 		case sp_ilb1: | ||||
| 		case sp_ilb2: | ||||
| #ifdef USE_SHC | ||||
| 			lp->em_instr = op_lab; | ||||
| 			lp->em_optyp = OPSYMBOL; | ||||
| 			lp->em_soper = strarg(t); | ||||
| 			lp->em_u.em_loper = argval; | ||||
| 			return; | ||||
| #endif | ||||
| 		case sp_fpseu: | ||||
| 		case sp_dlb1: | ||||
| 		case sp_dlb2: | ||||
|  | @ -169,6 +176,11 @@ fillemlines() { | |||
| 			continue; | ||||
| 		case PAR_B: | ||||
| 			t = sp_ilb2; | ||||
| #ifdef USE_SHC | ||||
| 			lp->em_optyp = OPSYMBOL; | ||||
| 			lp->em_u.em_loper = argval; | ||||
| 			lp->em_soper = strarg(t); | ||||
| #endif | ||||
| 			break; | ||||
| 		case PAR_D: | ||||
| 			assert(t == sp_cstx); | ||||
|  | @ -201,6 +213,7 @@ dopseudo() { | |||
| 		error("No table entry for %d",emlines[0].em_instr); | ||||
| 	nextispseu=0; | ||||
| 	switch(savetab1) { | ||||
| #ifndef USE_SHC | ||||
| 	case sp_ilb1: | ||||
| 	case sp_ilb2: | ||||
| 		swtxt(); | ||||
|  | @ -215,6 +228,7 @@ dopseudo() { | |||
| 		} | ||||
| #endif | ||||
| 		return; | ||||
| #endif | ||||
| 	case sp_dlb1: | ||||
| 	case sp_dlb2: | ||||
| 	case sp_dnam: | ||||
|  | @ -296,6 +310,16 @@ dopseudo() { | |||
| 				fatal("bad pointer size"); | ||||
| 			if ( getarg(any_ptyp)!=sp_cend ) | ||||
| 				fatal("too many parameters"); | ||||
| #ifdef USE_SHC | ||||
| 		} else if (argval == ms_sth) { | ||||
| 			int lbl, height, flthr; | ||||
| 			getarg(ptyp(sp_cst2)); lbl = argval; | ||||
| 			getarg(ptyp(sp_cst2)); height = argval; | ||||
| 			getarg(ptyp(sp_cst2)); flthr = argval; | ||||
| 			if ( getarg(any_ptyp)!=sp_cend ) | ||||
| 				fatal("too many parameters"); | ||||
| 			add_label(lbl,height, flthr); | ||||
| #endif | ||||
| #ifdef REGVARS | ||||
| 		} else if (argval == ms_gto) { | ||||
| 			getarg(ptyp(sp_cend)); | ||||
|  | @ -365,6 +389,9 @@ dopseudo() { | |||
| 		break; | ||||
| 	case ps_end: | ||||
| 		getarg(cst_ptyp | ptyp(sp_cend)); | ||||
| #ifdef USE_SHC | ||||
| 		kill_labels(); | ||||
| #endif | ||||
| 		cleanregs(); | ||||
| #ifdef REGVARS | ||||
| 		unlinkregs(); | ||||
|  |  | |||
|  | @ -11,6 +11,9 @@ static char rcsid[] = "$Header$"; | |||
| #include "data.h" | ||||
| #include "result.h" | ||||
| #include "extern.h" | ||||
| #ifdef USE_SHC | ||||
| #include "mach.h" | ||||
| #endif | ||||
| 
 | ||||
| /*
 | ||||
|  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands. | ||||
|  | @ -139,3 +142,11 @@ prtoken(tp,leadingchar) token_p tp; { | |||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| #ifdef	USE_SHC | ||||
| printlabel(labnum) | ||||
| int labnum; | ||||
| { | ||||
| 	newilb(dollar[labnum].e_v.e_addr.ea_str); | ||||
| } | ||||
| #endif | ||||
|  |  | |||
							
								
								
									
										48
									
								
								mach/proto/ncg/label.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								mach/proto/ncg/label.c
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,48 @@ | |||
| #include "tables.h" | ||||
| #ifdef USE_SHC | ||||
| #include <stdio.h> | ||||
| #include "types.h" | ||||
| #include "param.h" | ||||
| #include "label.h" | ||||
| 
 | ||||
| static label_p label_list = NULL; | ||||
| extern char *myalloc(); | ||||
| 
 | ||||
| add_label(num, height, flth) | ||||
| { | ||||
| 	register label_p lbl = NULL; | ||||
| 
 | ||||
| 	if (height <= 0) return; | ||||
| 	if (flth != TRUE && flth != FALSE) | ||||
| 	    fatal("incorrect value for fallthrough"); | ||||
| 
 | ||||
| 	lbl = (label_p) myalloc(sizeof(label_t)); | ||||
| 	lbl->lb_next = label_list; | ||||
| 	lbl->lb_number = num; | ||||
| 	lbl->lb_height = height; | ||||
| 	lbl->lb_fallthrough = flth; | ||||
| 	label_list = lbl; | ||||
| } | ||||
| 
 | ||||
| label_p get_label(num) | ||||
| register word num; | ||||
| { | ||||
| 	register label_p tmp = label_list; | ||||
| 
 | ||||
| 	while (tmp != NULL) { | ||||
| 		if (tmp->lb_number == num) return tmp; | ||||
| 		tmp = tmp->lb_next; | ||||
| 	} | ||||
| 	return NULL; | ||||
| } | ||||
| 
 | ||||
| kill_labels() | ||||
| { | ||||
| 	label_p tmp; | ||||
| 
 | ||||
| 	while((tmp = label_list) != NULL) { | ||||
| 	    label_list = label_list->lb_next; | ||||
| 	    myfree((char *)tmp); | ||||
| 	} | ||||
| } | ||||
| #endif | ||||
							
								
								
									
										17
									
								
								mach/proto/ncg/label.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								mach/proto/ncg/label.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,17 @@ | |||
| /*
 | ||||
|  * This file contains the structures that hold information about the labels. | ||||
|  * The height and the fallthrough functions of the table.  | ||||
|  * | ||||
|  * Author: Hans van Eck.  | ||||
|  */ | ||||
| 
 | ||||
| typedef struct label *label_p; | ||||
| 
 | ||||
| typedef struct label { | ||||
| 	label_p	lb_next; | ||||
| 	word	lb_number; | ||||
| 	int	lb_height; | ||||
| 	short	lb_fallthrough; | ||||
|     } label_t; | ||||
| 
 | ||||
| extern label_p get_label(); | ||||
|  | @ -64,6 +64,11 @@ byte *trypat(bp,len) register byte *bp; { | |||
| 	if (Debug) { | ||||
| 		fprintf(stderr,"Matched:"); | ||||
| 		for (i=0;i<patlen;i++) { | ||||
| #ifdef USE_SHC | ||||
| 			if (emp[i].em_instr == op_lab) | ||||
| 				fprintf(stderr," lab"); | ||||
| 			else | ||||
| #endif | ||||
| 				fprintf(stderr," %3.3s",em_mnem[emp[i].em_instr-sp_fmnem]); | ||||
| 			if (emp[i].em_soper) | ||||
| 				fprintf(stderr," %s",emp[i].em_soper); | ||||
|  |  | |||
|  | @ -15,6 +15,8 @@ | |||
| 
 | ||||
| #define MAXROM 3 | ||||
| 
 | ||||
| #define op_lab  (sp_lmnem+1) | ||||
| 
 | ||||
| /*
 | ||||
|  * Tunable constants | ||||
|  */ | ||||
|  |  | |||
|  | @ -38,7 +38,7 @@ int Xstackflag=0; /* set in coercions, moves, and tests. %1 means something | |||
| 		   */ | ||||
| 
 | ||||
| struct varinfo *gen_inst(),*gen_move(),*gen_test(),*gen_preturn(),*gen_tlab(); | ||||
| struct varinfo *make_erase(); | ||||
| struct varinfo *gen_label(), *make_erase(); | ||||
| expr_t make_expr(),ident_expr(),subreg_expr(),tokm_expr(),all_expr(); | ||||
| expr_t perc_ident_expr(),sum_expr(),regvar_expr(); | ||||
| 
 | ||||
|  | @ -71,6 +71,7 @@ iocc_t iops[20]; | |||
| %token TESTS | ||||
| %token STACKINGRULES COERCIONS | ||||
| %token INSTRUCTIONS | ||||
| %token STACKHEIGHT FALLTHROUGH LABELDEF | ||||
| %token PROC CALL EXAMPLE | ||||
| %token FROM TO | ||||
| %token TEST MOVE STACK RETURN | ||||
|  | @ -844,6 +845,8 @@ gen_instruction | |||
| 		{ $$ = gen_move($2,$4); } | ||||
| 	| TEST tokeninstance | ||||
| 		{ $$ = gen_test($2);} | ||||
| 	| LABELDEF emarg | ||||
| 		{ $$ = gen_label($2-1); use_shc++; } | ||||
| 	| RETURN | ||||
| 		{ $$ = gen_preturn(); } | ||||
| 	; | ||||
|  | @ -1009,6 +1012,10 @@ expr | |||
| 		{ $$ = make_expr(TYPBOOL,EX_DEFINED,i_expr($3),0); } | ||||
| 	| SAMESIGN '(' expr ',' expr ')' | ||||
| 		{ $$ = make_expr(TYPBOOL,EX_SAMESIGN,i_expr($3),i_expr($5)); } | ||||
| 	| STACKHEIGHT '(' emarg ')' | ||||
| 		{ $$ = make_expr(TYPINT,EX_STACKHEIGHT,$3-1,0); } | ||||
| 	| FALLTHROUGH '(' emarg ')' | ||||
| 		{ $$ = make_expr(TYPBOOL,EX_FALLTHROUGH,$3-1,0); } | ||||
| 	| SFIT '(' expr ',' expr ')' | ||||
| 		{ $$ = make_expr(TYPBOOL,EX_SFIT,i_expr($3),i_expr($5)); } | ||||
| 	| UFIT '(' expr ',' expr ')' | ||||
|  |  | |||
|  | @ -110,6 +110,15 @@ struct varinfo *gen_test(from) iocc_t from; { | |||
| 	return(vp); | ||||
| } | ||||
| 
 | ||||
| struct varinfo *gen_label(arg) int arg; { | ||||
| 	register struct varinfo *vp; | ||||
| 
 | ||||
| 	NEW(vp,struct varinfo); | ||||
| 	vp->vi_int[0] = INSLABDEF; | ||||
| 	vp->vi_int[1] = arg; | ||||
| 	return(vp); | ||||
| } | ||||
| 
 | ||||
| struct varinfo *gen_preturn() { | ||||
| 	register struct varinfo *vp; | ||||
| 
 | ||||
|  |  | |||
|  | @ -25,6 +25,7 @@ initemhash() { | |||
| 
 | ||||
| 	for(i=0;i<=sp_lmnem-sp_fmnem;i++) | ||||
| 		enter(em_mnem[i],i+sp_fmnem); | ||||
| 	enter("lab", op_lab); | ||||
| } | ||||
| 
 | ||||
| unsigned emhash(name) register char *name; { | ||||
|  |  | |||
|  | @ -36,6 +36,7 @@ extern int maxmembers; | |||
| extern int regclass; | ||||
| extern int maxtokensize; | ||||
| extern int nprocargs, maxprocargs; | ||||
| extern int use_shc; | ||||
| 
 | ||||
| extern char *mystrcpy(); | ||||
| extern char *myalloc(); | ||||
|  |  | |||
|  | @ -206,6 +206,3 @@ instalookup(insta,filled) inst_t insta; { | |||
| 	l_instances[i] = insta; | ||||
| 	return(i); | ||||
| } | ||||
| 
 | ||||
| 	 | ||||
| 				 | ||||
|  |  | |||
|  | @ -20,12 +20,14 @@ cost	COST | |||
| defined	DEFINED | ||||
| exact	EXACT | ||||
| example	EXAMPLE | ||||
| fallthrough	FALLTHROUGH | ||||
| from	FROM | ||||
| gen	GEN | ||||
| highw	HIGHW | ||||
| inreg	INREG | ||||
| is_rom	ISROM | ||||
| kills	KILLS | ||||
| labeldef	LABELDEF | ||||
| leaving	LEAVING | ||||
| loww	LOWW | ||||
| move	MOVE | ||||
|  | @ -41,6 +43,7 @@ reusing	REUSING | |||
| rom	ROM | ||||
| samesign	SAMESIGN | ||||
| sfit	SFIT | ||||
| stackheight	STACKHEIGHT | ||||
| test	TEST | ||||
| to	TO | ||||
| ufit	UFIT | ||||
|  |  | |||
|  | @ -11,6 +11,7 @@ int	code_in_c=1;	/* put code in "tables.c" */ | |||
| int	tabledebug=0;	/* do not generate code for table debugging */ | ||||
| #endif | ||||
| int	verbose=0;	/* print all statistics */ | ||||
| int	use_shc;	/* use stackheight information */ | ||||
| char	*c_file=	"tables.c"; | ||||
| char	*h_file=	"tables.H"; | ||||
| char	*cd_file=	"code"; | ||||
|  | @ -592,6 +593,8 @@ outdefs() { | |||
| 	} | ||||
| 	if (tabledebug) | ||||
| 		cdef("TABLEDEBUG",1); | ||||
| 	if (use_shc) | ||||
| 		cdef("USE_SHC",1); | ||||
| } | ||||
| 
 | ||||
| outars() { | ||||
|  | @ -826,6 +829,12 @@ varinfo *kills,*allocates,*generates,*yields,*leaving; | |||
| 			codeint(vp->vi_int[1]); | ||||
| 			codenl(); | ||||
| 			break; | ||||
| 		case INSLABDEF: | ||||
| 			cocono = 0; | ||||
| 			code8(DO_LABDEF); | ||||
| 			codeint(vp->vi_int[1]); | ||||
| 			codenl(); | ||||
| 			break; | ||||
| 		} | ||||
| 	} | ||||
| 	codecoco(cocono); | ||||
|  |  | |||
|  | @ -48,3 +48,6 @@ | |||
| 
 | ||||
| #define NEXT(n,max,string) (n<max? n++ : tabovf(string)) | ||||
| #define NEW(x,y) x=(y*)myalloc(sizeof(*(x))) | ||||
| 
 | ||||
| #include <em_spec.h> | ||||
| #define op_lab	(sp_lmnem + 1) | ||||
|  |  | |||
|  | @ -11,3 +11,4 @@ | |||
| #define INSSETCC	(-5) | ||||
| #define INSERASE	(-6) | ||||
| #define INSREMOVE	(-7) | ||||
| #define INSLABDEF	(-8) | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue