Initial revision

This commit is contained in:
ceriel 1987-03-02 13:06:23 +00:00
parent 033000c4e1
commit f9b1523794
3 changed files with 219 additions and 0 deletions

91
mach/mantra/int/em.1 Normal file
View file

@ -0,0 +1,91 @@
.\" $Header$
.TH EM 1ACK
.ad
.SH NAME
em \- calling program for em interpreters
.SH SYNOPSIS
em [-t] [+fcp] [loadfile [args ... ...] ]
.SH DESCRIPTION
The loadfile ("e.out" if not specified) is opened to read the first 8 word header.
The format of this header is explained in e.out(5).
One of these 8 words is a flag word
specifying the interpreter options requested at compile time.
The usual setting of these options is +t -f -c -p.
These options may be overridden at runtime as follows:
em -t turns the test option of; em +c turns count on ; em +p turns profile
on ; em +c +p turns both count and profile on.
Based on these options the name of the appropriate interpreter
is constructed.
Two versions exist, one for two byte words and four byte pointers and
one for four byte words and pointers.
The information in the header of the e.out file is used by em to select the
right interpreter for the word size of used in the e.out file.
.PP
This interpreter is searched for in ~em/lib/int[24]4.
.PP
The flags control the following options that can be turned off
or on by prepending them with - or + respectively:
.IP t
run time tests for undefined variables, array bounds etc...
This option costs a small amount of memory and some time.
However, it is very useful for debugging.
.IP p
profiling of the entire program. The interpreter maintains tables containing
an estimate of the number of processor state cycles used per source line.
A processor state cycle is equal to two internal clock cycles.
This option is expensive in time as well as in memory space.
The result tables made at run time are dumped in a human readable
format onto a file named
em_profile.
.IP f
maintain a bit map of all source lines that have been executed.
This map is written onto a file em_flow .
This option is almost free in time and space.
The file is not easy to read.
Of each procedure only the lines between the first statement and the last
statement are represented in the bit map.
Currently this option is not installed in the em tree.
.IP c
count line usage in tables that
contains for every source line the number of times it
was entered.
These tables are written onto em_count, a human readable file .
This option is cheap in time, but costs some in memory space.
.IP l
dump the line numbers of the last 64 lines entered onto a file named
em_last.
This file will be in a human readable format.
This option is used simultaneously with the test option.
.PP
These flags
give rise to 5 different interpreters which are in the
directory ~em/lib/int24 or in ~em/lib/int44
for the two byte word or the four byte word options, respectively.
.PP
.SH "FILES"
.IP ~em/lib/int[24]4/em_???? 35
interpreters proper
.IP em_profile
profile data
.IP em_count
source line count data
.IP em_flow
source line flow data
.IP em_last
last lines executed
.PD
.SH "SEE ALSO"
\fIack\fP(I),
.SH BUGS
Most error messages are self explanatory.
If runtime flags are turned on it is advisable to try again
with the default options.
If the interpreter does not work most probably your particular
machine has an other format for the system calls then assumed
in the source.
In that case adapt source file mloopc to your machine.
Also the instruction that causes the machine to allocate stack
space might differ .
In that case adapt the macro \fIclaimstack\fP in deffile.
.SH AUTHOR
Freek van Schagen

77
mach/pdp/int/em.1 Normal file
View file

@ -0,0 +1,77 @@
.\" $Header$
.TH EM 1ACK
.ad
.SH NAME
em \- calling program for em interpreters
.SH SYNOPSIS
em [-t] [+fcp] [loadfile [args ... ...] ]
.SH DESCRIPTION
The loadfile ("e.out" if not specified) is opened to read the first 8 word header.
The format of this header is explained in e.out(5).
One of these 8 words is a flag word
specifying the interpreter options requested at compile time.
The usual setting of these options is +t -f -c -p.
One of these options may be overridden at run time
by the corresponding flag of em.
Based on these options the name of the appropriate interpreter
is constructed.
.PP
The flags control the following options that can be turned off
or on by prepending them with - or + respectively:
.IP t
run time tests for undefined variables, array bounds etc...
This option costs a small amount of memory and some time.
However, it is very useful for debugging.
.IP p
profiling of the entire program. The interpreter maintain tables containing
an estimate of the number of memory cycles used per source line.
This option is expensive in time as well as in memory space.
The result tables made at run time are dumped onto a file named
em_runinf. This file is converted to human readable format
by the program eminform(1) which writes the profiling information
on a file called em_profile.
.IP f
maintain a bit map of all source lines that have been executed.
This map is written also onto the file em_runinf and can be interpreted by eminform(1) which writes in this case the file em_flow.
This option is almost free in time and space.
.IP c
count line usage in tables that
contains for every source line the number of times it
was entered.
These tables are also written onto em_runinf.
Eminform(1) can be used to convert this information into the
file em_count.
Cheap in time, expensive in memory space.
.PP
These flags
give rise to 5 different interpreters which are in the
directory ~em/lib/int22/em_????
.PP
If the interpreter exits with a non-zero exit status, then the line numbers
of the 64 last executed source lines are dumped on the file
em_runinf
in the current directory. Eminform(1) writes this information
on the human readable file em_last.
.SH "FILES"
.IP ~em/lib/int22/em_???? 35
interpreters proper
.IP em_runinf
memory dump containing runtime information
.IP em_profile
profile data
.IP em_count
source line count data
.IP em_flow
source line flow data
.IP em_last
last lines executed
.PD
.SH "SEE ALSO"
eminform(1), ack(1),
.SH BUGS
Most error messages are self explanatory.
The interpreter stops in case of lack of space with an error
message SEGVIO stack overflow.
If runtime flags are turned on it is advisable to try again
with the default options.
Bugs should be reported to Evert Wattel.

51
mach/pdp/int/eminform.1 Normal file
View file

@ -0,0 +1,51 @@
.\" $Header$
.tr ~
.TH EMINFORM 1ACK
.ad
.SH NAME
eminform \- converts runtime information of interpreted em to
human readable form.
.SH SYNOPSIS
eminform
.SH DESCRIPTION
The EM interpreter, em(1), has several debugging features built in.
They can be activated by flag options to em(1).
The EM interpreter collects the information while it runs the program.
When the program is terminated, the interpreter dumps this information onto
a file called em_runinf.
Eminform converts this information in human readable form onto
a set of files with fixed names, the file em_runinf itself is unlinked.
.PP
.in +15
.ti -13
~~em_last~~~~A circular buffer is used to keep track of
the last collection of executed source lines.
.ti -13
~~em_flow~~~~A bit map for all source lines tells which lines
are executed.
.ti -13
~~em_count~~~Count the number of times each source line was entered.
.ti -13
~~em_profile~Estimate the number of memory cycles
spent on each source line.
.in -15
.LP
The most common use of eminform is to print the numbers of the last executed
source lines if an execution error occurred.
No arguments are needed in this case.
.LP
Eminform will create only those files for which there were
interpreter flags turned on. If no runtime error occurred and
no flag was turned on the file em_runinf is not created. In
this case eminform will give the error message "read header
failed".
.SH FILES
em_runinf, em_last, em_flow, em_count, em_profile
.SH "SEE ALSO"
ack(1), em(1).
.SH BUGS
If an entire procedure is not touched, the the file name in
which this procedure occured is unknown.
If no em_runinf is available the error message is "read header
failed" and a core dump is created.
Bugs should be reported to Evert Wattel