200 lines
		
	
	
	
		
			7.7 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			200 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
 |