201 lines
7.7 KiB
Groff
201 lines
7.7 KiB
Groff
.\" Manual page
|
|
.\"
|
|
.\" $Id$
|
|
.TH INT 1 "$Revision$"
|
|
.ad
|
|
.SH NAME
|
|
int \- Interpreter for EM Machine Language
|
|
.SH SYNOPSIS
|
|
\fBint\fP [ intargs ] [ emfile [ emargs ] ]
|
|
.SH DESCRIPTION
|
|
This program interprets the EM machine-language, and replaces
|
|
the pascal written EM interpreter described in [1].
|
|
The program interprets load files in \fIe.out\fP format (see [1], sec. 10.3).
|
|
.LP
|
|
\fIEmfile\fP is the name of the load file; if no name is
|
|
specified, the default name \fIe.out\fP is used.
|
|
The program can handle several word size / pointer size combinations.
|
|
The combinations presently supported are 2/2, 2/4 and 4/4.
|
|
.LP
|
|
\fIEmargs\fP are the arguments for the program being interpreted.
|
|
If any arguments are given, then \fIemfile\fP must be present.
|
|
.PP
|
|
The interpreter can generate diagnostic messages (warnings) about the
|
|
interpreted program.
|
|
Some of these warnings are given very frequently,
|
|
which may result in a large, non-functional message file.
|
|
To avoid this behavior, counters keep track of the number of times
|
|
a given warning occurs in a given file at a given line number.
|
|
Only when this counter is a power of 4, the warning will actually be
|
|
given.
|
|
`Logarithmic warning generation' is established in this way.
|
|
.PP
|
|
\fIInt\fP preempts the highest two file descriptors available, for
|
|
diagnostic purposes.
|
|
Interpreted programs can use the other file descriptors without
|
|
clash problems.
|
|
.PP
|
|
.I "Interpreter parameters"
|
|
.br
|
|
\fIInt\fP itself accepts the following options, all given as separate flags:
|
|
.IP \fB\-d\fP
|
|
The program will not be run; a disassembly listing of the program will
|
|
be written to standard output file instead.
|
|
The original names are lost, but the procedure structure is recovered.
|
|
.IP \fB\-h\fP\fIN\fP
|
|
The maximum size of the heap will be limited to \fIN\fP bytes. This can be
|
|
used to force a heap overflow trap.
|
|
.IP \fB\-I\fP\fIN\fP
|
|
It is possible to tell \fIint\fP to ignore traps in the range 0-15.
|
|
If a trap is ignored, every time the trap would have happened
|
|
a warning is generated instead.
|
|
The argument \fIN\fP is the trap number, as described in [1], sec. 9.
|
|
For ignoring more than one trap, several \fB\-I\fP flags are needed.
|
|
.IP \fB\-m\fP\fIfile\fP
|
|
The argument \fIfile\fP is the name of a file on which the messages will
|
|
appear.
|
|
The default file name is \fIint.mess\fP.
|
|
.IP \fB\-r\fP\fIN\fP
|
|
Determines the size of the Function Return Area.
|
|
Default: 2 \(mu pointer size.
|
|
.IP \fB\-s\fP\fIN\fP
|
|
The maximum size of the stack will be limited to \fIN\fP bytes. This can be
|
|
used to force a stack overflow trap.
|
|
.IP \fB\-t\fP
|
|
If given, a file \fIint.tally\fP will be produced upon program termination.
|
|
For each source file, it contains a list of line numbers visited,
|
|
with the number of times the line was visited and
|
|
the number of EM instructions executed on the line.
|
|
.IP \fB\-W\fP\fIN\fP
|
|
This option can be used to disable warnings.
|
|
The argument \fIN\fP is the number of the warning to be suppressed,
|
|
as found in the \fIint\fP documentation [3].
|
|
For disabling more than one warning, several \fB\-W\fP flags are needed.
|
|
.PP
|
|
.I "The Logging Machine"
|
|
.br
|
|
The EM machine is monitored continually by a Logging Machine. This logging
|
|
machine keeps an instruction count and
|
|
can produce a trace of the actions of the EM machine, make readable
|
|
dumps of the stack, heap and global data area, and stop the EM machine after a
|
|
given instruction number.
|
|
The actions of the logging machine are controlled by
|
|
its internal variables, the values of which can be set by assignments on the
|
|
command line, much like setting macro names in a call of \fImake\fP.
|
|
These assignments can be interspersed with the options for the EM machine.
|
|
.PP
|
|
The logging machine has the following internal variables:
|
|
.IP \fBLOG\fP=\fIN\fP
|
|
Logging will start when the instruction count has reached \fIN\fP.
|
|
.IP \fBLOGMASK\fP=\fIstring\fP
|
|
The tracing actions are controlled by a log mask; the log mask consists of a
|
|
list of pairs of action classes and logging levels.
|
|
E.g. \fBLOGMASK\fP=\fIm9\fP means: trace all monitor calls.
|
|
The action classes are described fully in [3].
|
|
The default log mask is reasonably suitable.
|
|
.IP \fBLOGFILE\fP=\fIstring\fP
|
|
The \fIstring\fP is the name of a file on which all logging information is
|
|
written.
|
|
The default file name is \fIint.log\fP.
|
|
.IP \fBSTOP\fP=\fIN\fP
|
|
The logging machine stops the EM machine after instruction \fIN\fP.
|
|
.PP
|
|
Stack dumps can be made after each instruction; they are controlled by the pair
|
|
\fBd4\fP in the log mask; gda and heap dumps can only be made after a specific
|
|
instruction.
|
|
The following internal variables pertain to memory dumps:
|
|
.IP \fBGDA\fP=\fIN\fP
|
|
The contents of the Global Data Area are dumped after instruction \fIN\fP. The
|
|
extent can be adjusted by setting \fBGMIN\fP=\fINmin\fP (default 0) and
|
|
\fBGMAX\fP=\fINmax\fP (default HB).
|
|
.IP \fBHEAP\fP=\fIN\fP
|
|
The contents of the heap are dumped after instruction \fIN\fP.
|
|
.IP \fBSTDSIZE\fP=\fIN\fP
|
|
The stack dump is restricted to the \fIN\fP topmost bytes.
|
|
.IP \fBRAWSTACK\fP=\fIN\fP
|
|
Normally the stack dump produced is divided into activation records
|
|
separated by formatted dumps of the Return Status Blocks.
|
|
If \fIN\fP is non-zero, this dividing and formatting is suppressed, and the
|
|
stack is dumped raw.
|
|
.PP
|
|
Some combinations of variable settings are generally useful and can be
|
|
abbreviated:
|
|
.IP \fBAT\fP=\fIN\fP
|
|
Is an abbreviation of \fBLOG\fP=\fIN\-1\fP \fBSTOP\fP=\fIN+1\fP.
|
|
The default log mask applies.
|
|
.IP \fBL\fP=\fIstring\fP
|
|
Is an abbreviation of \fBLOG\fP=\fI0\fP \fBLOGMASK\fP=\fIstring\fP.
|
|
E.g., \fBL\fP=\fIm9\fP will log all monitor calls
|
|
and \fBL\fP=\fIA\-Z9\fP will log all instructions (give a full trace).
|
|
.PP
|
|
When the interpreter forks, the child continues logging on a new file named
|
|
\fIint.log_1\fP, etc.
|
|
In principle it reevaluates the interpreter arguments, now looking for
|
|
\fBLOG_1\fP, \fBLOGMASK_1\fP, etc., but this feature has not been fully
|
|
implemented.
|
|
.PP
|
|
.I "Diagnostics"
|
|
.br
|
|
All diagnostics are written to the message file.
|
|
Diagnostics come in three flavors:
|
|
.IP \-
|
|
(messages): These mention NOP instructions, give more information
|
|
about incoming signals and display the exit status of the program.
|
|
.IP \-
|
|
(warnings): These are generated as a result of the checking.
|
|
In most cases the diagnostic is self-explanatory.
|
|
A complete description of the warnings can be found in the \fIint\fP
|
|
documentation [3].
|
|
.IP \-
|
|
(fatal errors): This diagnostic is the result of an irrecoverable
|
|
error, generally before the program has started: incorrect call of the
|
|
interpreter, cannot access file, incorrect format of load file. A few follow
|
|
during interpretation: out of memory, uncaught traps, floating point operation
|
|
on a version without floating point;
|
|
execution stops immediately after the diagnostic is generated.
|
|
.PP
|
|
Further diagnostics are generated (on \fIstderr\fP) if files cannot
|
|
be opened or found.
|
|
.SH "SEE ALSO"
|
|
e.out(5), ack(1), em22(1), em24(1), em44(1).
|
|
.IP [1]
|
|
Andrew S. Tanenbaum, Hans van Staveren, Ed G. Keizer and Johan W. Stevenson,
|
|
\fIDescription of a Machine Architecture for use with Block
|
|
Structured Languages\fP, Informatica rapport IR-81.
|
|
.IP [2]
|
|
Amsterdam Compiler Kit, reference manual and UNIX manual pages.
|
|
.IP [3]
|
|
Eddo de Groot, Leo van den Berge, Dick Grune,
|
|
\fIThe EM Interpreter\fP.
|
|
.SH "FILES"
|
|
.ta 20n
|
|
int.mess contains messages
|
|
.br
|
|
int.log contains logging info, if requested
|
|
.br
|
|
int.tally contains tally results, if requested
|
|
.br
|
|
int.core produced upon fatal error; format provisional
|
|
.SH "BUGS"
|
|
The monitor calls
|
|
.IR mpxcall ,
|
|
.I ptrace
|
|
and
|
|
.I profile
|
|
have not been implemented.
|
|
.br
|
|
The maximum number of bytes for rotation is 4.
|
|
.br
|
|
The UNIX V7 struct tchars is not emulated under System V.
|
|
.br
|
|
The P and N restrictions on operands are not checked.
|
|
.br
|
|
The start-up has a quadratic component in the number of procedures in the EM
|
|
program.
|
|
.SH "AUTHORS"
|
|
L.J.A. van den Berge.
|
|
.br
|
|
E.J. de Groot.
|
|
.br
|
|
D. Grune
|