EM(1ACK)

NAME
em - calling program for em interpreters

SYNOPSIS
em [-t] [+fcp] [loadfile [args ... ...] ]

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.

The flags control the following options that can be turned off or on by prepending them with - or + respectively:

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.

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.

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.

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.

These flags give rise to 5 different interpreters which are in the directory ~em/lib/int22/em_????

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.

FILES

~em/lib/int22/em_????
    interpreters proper

em_runinf
    memory dump containing runtime information

em_profile
    profile data

em_count
    source line count data

em_flow
    source line flow data

em_last
    last lines executed

SEE ALSO
eminform(1), ack(1),

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.