623 lines
20 KiB
Plaintext
623 lines
20 KiB
Plaintext
|
.nr LL 7.5i
|
||
|
.nr PD 1v
|
||
|
.TL
|
||
|
Amsterdam Compiler Kit installation guide
|
||
|
.AU
|
||
|
Ed Keizer
|
||
|
.AI
|
||
|
Wiskundig Seminarium
|
||
|
Vrije Universiteit
|
||
|
Amsterdam
|
||
|
.NH
|
||
|
Introduction
|
||
|
.PP
|
||
|
This document
|
||
|
describes the process of installing Amsterdam Compiler Kit.
|
||
|
It depends on your combination of hard- and software how
|
||
|
hard it will be to install the kit.
|
||
|
This description is intended for a PDP 11/44 running
|
||
|
.UX
|
||
|
Version 7.
|
||
|
Installation on other PDP 11's should be easy, as long
|
||
|
as they have separate instruction and data space.
|
||
|
Installation on machine's without this feature, like PDP 11/34,
|
||
|
PDP 11/60 requires extensive surgery on some programs and is
|
||
|
thought of as impossible.
|
||
|
See chapter 6 for installation on other systems.
|
||
|
.NH
|
||
|
Restoring tree
|
||
|
.PP
|
||
|
The process of installing Amsterdam Compiler Kit is quite simple.
|
||
|
It is important that the original Amsterdam Compiler Kit
|
||
|
distribution tree structure is restored.
|
||
|
Proceed as follows
|
||
|
.IP " -" 10
|
||
|
Create a directory, for example /usr/em, on a device
|
||
|
with at least 20000 blocks left.
|
||
|
.IP " -"
|
||
|
Change to that directory (cd ...); it will be the working directory.
|
||
|
.IP " -"
|
||
|
Extract all files from the distribution medium, for instance
|
||
|
magtape:
|
||
|
\fBtar x\fP.
|
||
|
.IP " -"
|
||
|
Keep a copy of the original distribution to be able to repeat the process
|
||
|
of installation in case of disasters.
|
||
|
This copy is also useful as a reference point for diff-listings.
|
||
|
.LP
|
||
|
The directories in the tree contain the following information:
|
||
|
.nr PD 1v
|
||
|
.IP "lib" 14
|
||
|
.br
|
||
|
almost all binaries and shell files used by commands and
|
||
|
library em_data.a from misc/data
|
||
|
.IP "lib/ack"
|
||
|
.br
|
||
|
The command descriptor files used by the program ack.
|
||
|
.nr PD 0
|
||
|
.IP "bin"
|
||
|
.br
|
||
|
the few utilities that knot things together
|
||
|
.IP "etc"
|
||
|
.br
|
||
|
The MAIN description of EM sits here.
|
||
|
contains files (e.g. em_table) describing
|
||
|
the opcodes and pseudos in use,
|
||
|
the operands allowed, effect in stack etc. etc.
|
||
|
Make in this directory creates most of the files in h
|
||
|
.IP "include"
|
||
|
.br
|
||
|
More or less system independent include files needed by modules
|
||
|
in the C library from lang/cem/libcc.
|
||
|
Especially needed for "stdio".
|
||
|
.IP "h"
|
||
|
.br
|
||
|
The #include files for:
|
||
|
.nf
|
||
|
as_spec.h Used by EM assembler and interpreters.
|
||
|
em_abs.h Contains trap numbers and address for lin and fil
|
||
|
em_flag.h Definition of bits in array em_flag in lib/em_data.a
|
||
|
Describes parameters effect on flow of instructions
|
||
|
em_mes.h Definition of names for mes pseudo numbers
|
||
|
em_mnem.h instruction => compact mapping.
|
||
|
em_pseu.h pseudo instruction => compact mapping
|
||
|
em_ptyp.h Useful for compact code reading/writing,
|
||
|
defines classes of parameters
|
||
|
em_spec.h Definition of constants used in compact code
|
||
|
local.h Various definitions for local versions
|
||
|
pc_err.h Definitions of error numbers in Pascal
|
||
|
pc_file.h Macro's used in file handling in Pascal
|
||
|
em_path.h Pathnames used by \fIack\fP, intended
|
||
|
for all utilities
|
||
|
pc_size.h Sizes of objects used by Pascal compiler and
|
||
|
run-time system.
|
||
|
em_reg.h Definition of names for register types.
|
||
|
.IP "doc"
|
||
|
.br
|
||
|
Documentation
|
||
|
.nf
|
||
|
cg.doc Use and internal specification of the backend.
|
||
|
.br
|
||
|
regadd.doc Update for cg.doc concerning register variables
|
||
|
.br
|
||
|
regadd.doc Description of steps to add register variables.
|
||
|
.br
|
||
|
ack.doc Layout of description files needed for each machine.
|
||
|
.br
|
||
|
cref.doc C reference manual, addendum
|
||
|
.br
|
||
|
install.doc Ack Installation Guide
|
||
|
.br
|
||
|
pcref.doc Pascal reference manual, addendum
|
||
|
.br
|
||
|
peep.doc Description of the peephole optimizer
|
||
|
.br
|
||
|
em.doc EM reference manual
|
||
|
.br
|
||
|
toolkit.doc A general overview of the toolkit
|
||
|
.br
|
||
|
v7bugs.doc Bugs in the standard V7 system
|
||
|
.br
|
||
|
val.doc Pascal validation suite version 3 report
|
||
|
.nf
|
||
|
.IP "doc/em.doc"
|
||
|
.br
|
||
|
The EM-manual IR-81
|
||
|
.IP "doc/em.doc/int"
|
||
|
.br
|
||
|
The EM interpreter written in pascal
|
||
|
.IP "mkun"
|
||
|
.br
|
||
|
The PUBMAC macro package for nroff/troff from the Katholieke Universiteit at
|
||
|
Nijmegen.
|
||
|
It is used for the EM reference manual,
|
||
|
the Makefile installs the macro package in
|
||
|
/usr/lib/tmac/tmac.mkun*.
|
||
|
This package is in the public domain.
|
||
|
.IP "mach"
|
||
|
.br
|
||
|
just there to group the directories for all machines
|
||
|
these directories have sub-directories named:
|
||
|
.nf
|
||
|
as the assembler ( *.s + libraries => a.out )
|
||
|
cg the new backend ( *.m => *.s )
|
||
|
lib the libraries for all run-time systems
|
||
|
these libraries are used by the assembler.
|
||
|
libpc Used to create Pascal run-time system in 'lib'
|
||
|
libcc Used to create C run-time system in 'lib'
|
||
|
libem Sources for EM runtime system, result sits in 'lib'
|
||
|
test Various tests
|
||
|
dl Down-load programs
|
||
|
int Source for an interpreter
|
||
|
available are:
|
||
|
PMDS II 68000, wordsize 2, ptrsize 4
|
||
|
mach/m68k2
|
||
|
mach/m68k2/as
|
||
|
mach/m68k2/cg
|
||
|
mach/m68k2/libem
|
||
|
mach/m68k2/lib
|
||
|
mach/m68k2/dl
|
||
|
mach/m68k2/libpc
|
||
|
mach/m68k2/libcc
|
||
|
mach/m68k2/libsys
|
||
|
bare 6809
|
||
|
mach/6809
|
||
|
mach/6809/as
|
||
|
8080, wordsize 2, ptrsize 2
|
||
|
mach/8080
|
||
|
mach/8080/as
|
||
|
mach/8080/test
|
||
|
mach/8080/libcc
|
||
|
mach/8080/lib
|
||
|
bare 8086, wordsize 2, ptrsize 2
|
||
|
mach/i86
|
||
|
mach/i86/as
|
||
|
mach/i86/lib
|
||
|
mach/i86/libcc
|
||
|
mach/i86/dl
|
||
|
mach/i86/libem
|
||
|
mach/i86/libpc
|
||
|
mach/i86/saio (library for stand-alone EM on 86/12A )
|
||
|
pdp 11, UNIX/V7, wordsize 2, ptrsize 2
|
||
|
mach/pdp
|
||
|
mach/pdp/test
|
||
|
mach/pdp/libem
|
||
|
mach/pdp/lib
|
||
|
mach/pdp/libcc
|
||
|
mach/pdp/libpc
|
||
|
mach/pdp/cg
|
||
|
mach/pdp/int -PDP 11/44 EM interpreter
|
||
|
vax 780, UNIX V7, wordsize 4, ptrsize 4
|
||
|
mach/vax4
|
||
|
mach/vax4/cg
|
||
|
mach/vax4/lib
|
||
|
mach/vax4/libcc
|
||
|
mach/vax4/libem
|
||
|
mach/vax4/libpc
|
||
|
z80, CP/M, wordsize 2, ptrsize 2
|
||
|
mach/z80
|
||
|
mach/z80/as
|
||
|
mach/z80/libem
|
||
|
mach/z80/lib
|
||
|
mach/z80/libcc
|
||
|
mach/z80/libpc
|
||
|
mach/z80/int -Z80 EM interpreter
|
||
|
z80, nascom
|
||
|
mach/z80a
|
||
|
mach/z80a/dl
|
||
|
vax 11/780, Berkeley UNIX, wordsize 2, ptrsize 4
|
||
|
mach/vax2
|
||
|
mach/vax2/cg
|
||
|
mach/vax2/lib
|
||
|
mach/vax2/libpc
|
||
|
mach/vax2/libem
|
||
|
bare 6500, wordsize 2, ptrsize 2
|
||
|
mach/6500
|
||
|
mach/6500/as
|
||
|
mach/6500/dl
|
||
|
mach/6500/libem
|
||
|
mach/6500/lib
|
||
|
bare 6800, wordsize 2, ptrsize 2
|
||
|
mach/6800
|
||
|
mach/6800/as
|
||
|
EM virtual machine code, wordsize 2, ptrsize 2
|
||
|
mach/int
|
||
|
mach/int/libcc
|
||
|
mach/int/libpc
|
||
|
mach/int/lib
|
||
|
mach/int/test
|
||
|
The directory proto contains files used by most machines.
|
||
|
e.g. makefiles for libraries for C and Pascal
|
||
|
mach/proto
|
||
|
mach/proto/libg
|
||
|
.fi
|
||
|
.IP "emtest"
|
||
|
.br
|
||
|
Contains prototype of em test set.
|
||
|
.IP "man"
|
||
|
.br
|
||
|
Man files for various utilities
|
||
|
.IP "lang"
|
||
|
.br
|
||
|
just there to group the directories for all front-ends
|
||
|
.IP "lang/pc"
|
||
|
.br
|
||
|
Pascal front-end
|
||
|
.IP "lang/pc/libpc"
|
||
|
.br
|
||
|
Source of Pascal run-time system ( in EM or C )
|
||
|
.IP "lang/pc/test"
|
||
|
.br
|
||
|
Some test programs written in Pascal
|
||
|
.IP "lang/pc/pem"
|
||
|
.br
|
||
|
The compiler proper
|
||
|
.IP "lang/cem"
|
||
|
.br
|
||
|
C front-end
|
||
|
.IP "lang/cem/libcc"
|
||
|
.br
|
||
|
Directories with sources of C runtime system, libraries (in EM or C)
|
||
|
.IP "lang/cem/libcc/gen"
|
||
|
.br
|
||
|
Sources for routines in chapter III of UNIX programmers manual,
|
||
|
excluding STDIO
|
||
|
.IP "lang/cem/libcc/stdio"
|
||
|
.br
|
||
|
STDIO sources
|
||
|
.IP "lang/cem/libcc/mon"
|
||
|
.br
|
||
|
Sources for routines in chapter II, written in EM
|
||
|
.IP "lang/cem/comp"
|
||
|
.br
|
||
|
The compiler proper
|
||
|
.IP "lang/cem/ctest"
|
||
|
.br
|
||
|
C test set
|
||
|
.IP "lang/cem/ctest/cterr"
|
||
|
.br
|
||
|
Programs developed for pinpointing previous errors
|
||
|
.IP "lang/cem/ctest/ct*"
|
||
|
.br
|
||
|
The test programs.
|
||
|
.IP "util"
|
||
|
.br
|
||
|
Contains directories with various utilities
|
||
|
.IP "util/opt"
|
||
|
.br
|
||
|
EM peephole optimizer (*.k => *.m)
|
||
|
.IP "util/misc"
|
||
|
.br
|
||
|
Decode (*.[km] => *.e) + encode (*.e => *.k)
|
||
|
.IP "util/data"
|
||
|
.br
|
||
|
The C-code for `lib/em_data.a`
|
||
|
These sources are created by the Makefile in `etc`
|
||
|
.IP "util/ass"
|
||
|
.br
|
||
|
The EM assembler ( *.[km] + libraries => e.out )
|
||
|
.IP "util/arch"
|
||
|
.br
|
||
|
The archiver to be used for ALL EM utilities
|
||
|
.IP "util/cgg"
|
||
|
.br
|
||
|
A program needed for compiling backends.
|
||
|
.IP "util/cpp"
|
||
|
.br
|
||
|
The V7 C preprocessor.
|
||
|
.LP
|
||
|
All pathnames mentioned in the text of this document are relative to the
|
||
|
working directory, unless they start with '/'.
|
||
|
.PP
|
||
|
The person doing the installation needs permission to write in the
|
||
|
directories of the Amsterdam Compiler Kit distribution tree.
|
||
|
Preferably you should log in as sys (uid=3,gid=0).
|
||
|
.NH
|
||
|
Pathnames
|
||
|
.PP
|
||
|
Absolute pathnames are concentrated in "h/em_path.h".
|
||
|
Only the pascal runtime system and the utility \fIack\fP use
|
||
|
absolute pathnames to access files in the kit.
|
||
|
The tree is distributed with /usr/em as the working
|
||
|
directory.
|
||
|
The definition of EM_HOME in em_path.h should be altered to
|
||
|
specify the root
|
||
|
directory for the Compiler Kit distribution on your system.
|
||
|
The trailing " in the definition of EM_HOME is intentionally
|
||
|
missing!
|
||
|
Em_path.h also specifies which directory should be used for
|
||
|
temporary files.
|
||
|
Most programs from the kit do indeed use that directory
|
||
|
although some remain stubborn and use /tmp or /usr/tmp.
|
||
|
.LP
|
||
|
The shape of the tree should not be altered lightly because
|
||
|
most Makefiles and the
|
||
|
utility \fIack\fP know the shape of the ACK tree.
|
||
|
All pathnames in all Makefiles are relative, that is do not
|
||
|
have "/" as the first character.
|
||
|
The knowledge of the utility \fIack\fP about the shape of the tree is
|
||
|
concentrated in the files in the directory lib/ack.
|
||
|
.NH
|
||
|
Commands
|
||
|
.PP
|
||
|
The kit is distributed with all available commands in the bin
|
||
|
directory.
|
||
|
The commands distributed are:
|
||
|
.IP "\fIack\fP, \fIacc\fP, \fIapc\fP and their links"
|
||
|
.br
|
||
|
They are used to compile the Pascal, C, etc... programs.
|
||
|
.IP \fIarch\fP
|
||
|
.br
|
||
|
The archiver used for the EM- and universal assembler.
|
||
|
.IP "\fIem\fP and \fIeminform\fP"
|
||
|
.br
|
||
|
The EM interpretator for the PDP-11 and the program to unravel
|
||
|
its post-mortem information.
|
||
|
.LP
|
||
|
We currently make the kit available to our users by telling
|
||
|
them that they should include the bin directory of the kit in
|
||
|
their PATH shell variable.
|
||
|
The programs will still work when moved to a different
|
||
|
directory.
|
||
|
The copying should preferably be done with tar, since links are
|
||
|
heavily used.
|
||
|
Renaming of the programs linked to \fIack\fP will not always
|
||
|
produce the desired result.
|
||
|
This program uses its call name as an argument.
|
||
|
Any call name not being \fIcc\fP, \fIacc\fP, \fIpc\fP or \fIapc\fP will be
|
||
|
interpreted as the name of a 'machine description' and the
|
||
|
program will try to find a description file with that name.
|
||
|
All recompilations will only touch the utilities in the bin
|
||
|
directory, not your own copies.
|
||
|
.NH
|
||
|
Options
|
||
|
.PP
|
||
|
There is one important option in h/local.h.
|
||
|
The utility \fIack\fP uses a default machine name when called
|
||
|
as \fIacc\fP, \fIcc\fP, \fIapc\fP, \fIpc\fP or \fIack\fP.
|
||
|
The machine name used for default is determined by the
|
||
|
definition of ACKM in h/local.h.
|
||
|
The current definition is \fIpdp\fP.
|
||
|
.PP
|
||
|
The distribution is tailored to one specific opreating system per CPU type.
|
||
|
For some of these CPU's it is possible to tailor the distribution to another
|
||
|
operating system.
|
||
|
The steps to be taken are described in READ_ME (or README) files in the
|
||
|
subdirectories of the directory in EM_HOME/mach for that particular machine.
|
||
|
For example: The vax2 distribution is tailoerd to BSD4.1, but has #define's
|
||
|
for BSD4.1c and BSD4.2.
|
||
|
For the names and places of these define's look in EM_HOME/mach/vax2/cg and
|
||
|
EM_HOME/mach/vax2/libem.
|
||
|
.NH
|
||
|
Recompilation
|
||
|
.PP
|
||
|
The kit comes with binaries in the directories \fBbin\fP and
|
||
|
\fBlib\fP.
|
||
|
Some directories among mach/*/lib contain archives with object files,
|
||
|
notably mach/pdp/lib.
|
||
|
The binaries and object files are for a PDP 11/44 with floating
|
||
|
point running UNIX V7.
|
||
|
.PP
|
||
|
Almost all directories contain a "Makefile" or a shell command file called
|
||
|
"make".
|
||
|
Apart from commands applying to that specific directory these
|
||
|
files all recognize a few special commands.
|
||
|
When called with one of these they will apply the command to
|
||
|
their own directory and all subdirectories.
|
||
|
The special commands are:
|
||
|
.IP "install" 20
|
||
|
recompile and install all binaries and libraries.
|
||
|
.br
|
||
|
Some Makefiles allow errors to occur in the programs they call.
|
||
|
They ignore such errors and notify the user with the message
|
||
|
"~....... error code n: ignored".
|
||
|
Whenever such a message appears in the output you can ignore it
|
||
|
too.
|
||
|
.br
|
||
|
The installation of the PUBMAC macro package is not done
|
||
|
automatically from the higher level directory.
|
||
|
.IP "cmp"
|
||
|
recompile all binaries and libraries and compare them to the
|
||
|
ones already installed.
|
||
|
.IP pr
|
||
|
print the sources and documentation on the standard output.
|
||
|
.IP opr
|
||
|
make pr | opr
|
||
|
.br
|
||
|
Opr should be an off-line printer daemon.
|
||
|
On some systems it exists under another name e.g. lpr.
|
||
|
The easiest way to call such a spooler is using a shell script
|
||
|
with the name opr that calls lpr.
|
||
|
This script should be placed in /usr/bin or EM_HOME/bin or
|
||
|
one of the directories in your PATH.
|
||
|
.IP clean
|
||
|
remove all files not needed for day-to-day use,
|
||
|
that is binaries not in bin or lib, object files etc.
|
||
|
.LP
|
||
|
Example:
|
||
|
.nf
|
||
|
.sp 1
|
||
|
make install
|
||
|
.sp 1
|
||
|
.fi
|
||
|
given as command in the home directory will cause
|
||
|
recompilation of all programs in the kit.
|
||
|
.LP
|
||
|
Recompilation of the complete kit lasts about 9 hours an a PDP
|
||
|
11/44.
|
||
|
.NH 2
|
||
|
Recompilation on a different machine.
|
||
|
.PP
|
||
|
Installation on other systems will often require recompilation
|
||
|
of all programs.
|
||
|
The presence of a C compiler is essential for recompilation.
|
||
|
Except the Pascal compiler proper all programs are written in C.
|
||
|
Some modules are derived from \fIyacc\fP sources.
|
||
|
Retranslating these programs from that yacc source is not
|
||
|
necessary, although it might improve performance.
|
||
|
Some versions of \fIyacc\fP 'know' that the resulting C programs will
|
||
|
run on a 32-bit int machine.
|
||
|
C modules produced by such a \fIyacc\fP are not portable and
|
||
|
should not be used to (cross)compile programs for 16-bit machines.
|
||
|
We assume a version UNIX which, apart from the C-compiler,
|
||
|
contains most normal utilities, like ed, sed, grep, make, the
|
||
|
Bourne shell etc.
|
||
|
All Makefiles use the system C-compiler.
|
||
|
The existence of a backend for your system is of course essential
|
||
|
if you wish to produce executable files for that system.
|
||
|
When the backend exists it is also possible to boot the Pascal
|
||
|
Compiler,
|
||
|
that is written in Pascal itself.
|
||
|
The kit contains the compact code files for the 2/2 and 2/4
|
||
|
versions of the Pascal compiler.
|
||
|
The current version of this compiler can only be used on machines
|
||
|
with a 16-bit word size and 16- or 32-bit pointers.
|
||
|
The Makefile automatically tries to boot the Pascal compiler
|
||
|
from one of these compact code files, if the compiler proves
|
||
|
unable to compile itself.
|
||
|
.PP
|
||
|
The native assemblers and loaders are used on PDP-11 and VAX.
|
||
|
The description files in lib/ack for other systems use our
|
||
|
universal assembler.
|
||
|
The load file produced by this assembler is not directly
|
||
|
usable in any system known to us,
|
||
|
but has to be converted before it can be put to use.
|
||
|
The \fIdl\fP programs present for some machines unravel
|
||
|
these load files and transmit commands to load memory
|
||
|
to a microprocessor over a serial line.
|
||
|
The PDP-11 version of our universal assembler is supplied
|
||
|
with a conversion program.
|
||
|
The file man/a.out.5 contains a description of the format of
|
||
|
the universal assembler load file,
|
||
|
it might be useful to those who wish or need to write their
|
||
|
own conversion programs.
|
||
|
.br
|
||
|
Berkeley UNIX for the VAX'en has (at least) three different
|
||
|
versions, BSD4.1a, BSD4.1c and BSD4.2. The READ_ME files in the
|
||
|
directories mach/vax2/cg, mach/vax2/libem, mach/vax4/cg and
|
||
|
mach/vax4/libem tell you how to adapt the vax2 and vax4 backend
|
||
|
to these versions.
|
||
|
.NH 2
|
||
|
Recompiling libraries
|
||
|
.PP
|
||
|
The kit contains sources for part II and III of the C-library, except
|
||
|
the math functions, they are grabbed from our V7 system and sometimes
|
||
|
altered in a EM dependent way or replaced altogether when the original
|
||
|
was in assembly.
|
||
|
These files can be used to make libraries for the Ack C-compiler.
|
||
|
The recompilation process uses a few include files.
|
||
|
The include directory in the EM home directory contains a few more
|
||
|
or less system independent include files.
|
||
|
The system dependent include files are fetched from /usr/include
|
||
|
on the system you use to recompile.
|
||
|
This may lead to several problems.
|
||
|
Sometimes the system differs so much from V7 that certain manifest constants
|
||
|
do not exist any more.
|
||
|
At other times these include files were written for a compiler without
|
||
|
a restriction on name length.
|
||
|
In that case - I've seen it happen - people tend to use differing
|
||
|
identifiers that are identical in the first eight characters.
|
||
|
All these problems you have to solve yourself,
|
||
|
the libraries are only included as an extra and too much system
|
||
|
dependent to give any guarantees.
|
||
|
.NH
|
||
|
Fixes to the UNIX V7 system
|
||
|
.PP
|
||
|
UNIX System V7 has a few bugs that prevent a part of or the whole kit
|
||
|
from working properly.
|
||
|
To be honest, we do not know which of the following changes are
|
||
|
essential to the functioning of our kit.
|
||
|
.PP
|
||
|
The file "doc/v7bugs.doc" gives for each of the following bugs
|
||
|
a small test program and a diff listing of the source files that have to be
|
||
|
modified.
|
||
|
.IP 1
|
||
|
Bug in the C optimizer for unsigned comparison
|
||
|
.nr PD 0
|
||
|
.IP 2
|
||
|
The loader 'ld' fails for large data and text portions
|
||
|
.IP 3
|
||
|
Floating point registers are not saved if more memory is needed.
|
||
|
.IP 4
|
||
|
Floating point registers are not copied to child in fork().
|
||
|
.nr PD 1v
|
||
|
.LP
|
||
|
Use the test programs to see if the errors are present in your system
|
||
|
and to check if the modifications are effective.
|
||
|
.NH
|
||
|
Testing
|
||
|
.PP
|
||
|
Test sets are available in Pascal, C and EM assembly.
|
||
|
.IP em 8
|
||
|
.br
|
||
|
The directory emtest contains a few EM test programs.
|
||
|
The EM assembly files in these tests must be transformed into
|
||
|
load files, thereby avoiding use of the EM optimizer.
|
||
|
These tests use the LIN and NOP instructions to mark the passing of each
|
||
|
test.
|
||
|
The NOP instruction prints the current line number during the
|
||
|
test phase.
|
||
|
Each test notifies its correctness by calling LIN with a unique
|
||
|
number followed by a NOP which prints this line number.
|
||
|
The test finishes normally with 0 as the last number printed
|
||
|
In all other cases a bug showed its
|
||
|
existence.
|
||
|
.IP Pascal
|
||
|
.br
|
||
|
The directory lang/pc/test contains a few pascal test programs.
|
||
|
All these programs print the number of errors found and a
|
||
|
identification of these errors.
|
||
|
.IP C
|
||
|
.br
|
||
|
The sub-directories in lang/cem/ctest contain C test programs.
|
||
|
The idea behind these tests is:
|
||
|
when you have a program called xx.c, compile it into xx.cem.
|
||
|
Run it with standard output to xx.cem.r, compare this file to
|
||
|
xx.cem.g, a file containing the 'ideal' output.
|
||
|
Any differences will point to implementation differences or
|
||
|
bugs.
|
||
|
Giving the command "run gen" or plain "run" starts this
|
||
|
process.
|
||
|
The differences will be presented on standard output.
|
||
|
The contents of the result files depend on the wordsize,
|
||
|
the xx.cem.g files on the distribution are intended for a
|
||
|
16-bit machine.
|
||
|
.NH
|
||
|
Documentation
|
||
|
.PP
|
||
|
Manual pages for Amsterdam Compiler Kit can be copied
|
||
|
to "/usr/man/man?" by the
|
||
|
following commands:
|
||
|
.DS
|
||
|
cd man
|
||
|
make install
|
||
|
.DE
|
||
|
.LP
|
||
|
Several documents are provided:
|
||
|
.DS
|
||
|
doc/toolkit.doc: a general overview
|
||
|
doc/pcref.doc: the Pascal-frontend reference manual
|
||
|
doc/val.doc: the results of running the Pascal Validation Suite
|
||
|
doc/cref.doc: the C-frontend manual
|
||
|
doc/em.doc: a description of the EM machine architecture
|
||
|
doc/peep.doc: internal documentation for the peephole optimizer
|
||
|
doc/cg.doc: documentation for backend writers and maintainers
|
||
|
doc/regadd.doc: addendum to previous document describing register variables
|
||
|
doc/install.doc: this document
|
||
|
.DE
|
||
|
.LP
|
||
|
The Validation Suite is a collection of more than 200 Pascal programs,
|
||
|
designed by Brian Wichmann and Arthur Sale to test Pascal compilers.
|
||
|
We are not allowed to distribute it, but you may
|
||
|
request a copy from
|
||
|
.DS
|
||
|
Richard J. Cichelli
|
||
|
A.N.P.A.
|
||
|
1350 Sullivan Trail
|
||
|
P.O. Box 598
|
||
|
Easton, Pennsylvania 18042
|
||
|
USA
|
||
|
.DE
|
||
|
.LP
|
||
|
Good luck.
|