.SH INTRODUCTION
This document provides a short introduction to the use of the ACK Modula-2
compiler. It also
-tells you where to find definition modules for "standard" modules.
+mentions the location of definition modules for "standard" modules.
.SH FILENAMES
Usually, a Modula-2 program consists of several definition and implementation
modules, and one program module.
The requirement does not hold for implementation or program modules,
but is certainly recommended.
.SH CALLING THE COMPILER
-The easiest way to do this is to let the \fIack\fR(1) program do it for you.
+The easiest way to do this is to let the \fIack\fR(1) program do it.
So, to compile a program module "prog.mod", just call
.nf
\fBack\fR \-m\fImach\fR prog.mod [ objects of implementation modules ]
.PP
.B C_busy
can be invoked in order
-to detect whether EM code is currently being generated, i.e. whether you are
-in between calls to
+to detect whether EM code is currently being generated, i.e. whether
.B C_open
-and
+is invoked without a corresponding
.BR C_close .
If this is the case,
.B C_busy
at its current position.
This is useful for reading an object that resides in an archive.
It returns 1 if it succeeds, 0 otherwise.
-If you use this entry point for reading, you don't have to call
+When using this entry point for reading,
.I rd_close
-to close the file. You can close the file yourself.
+does not have to be called.
.PP
.I Rd_rew_relo
rewinds the relocation part, so that it can be read again.
.I Rd_arhdr
returns 1 if a header was read, and 0 on end-of-file.
.PP
-When using any of the reading routines, you must define a routine
+When using any of the reading routines, a routine
named
-.IB rd_fatal .
+.I rd_fatal
+must be defined.
It is called when a read fails, and is not supposed to return.
Likewise, a routine
.I wr_fatal
Strength Reduction (SR) may create opportunities for UD.
.RE
.IP ""
-The global optimizer is a combiner, so, when using it, offer it all the source
-files of your program. This is not strictly necessary, but it makes the
+The global optimizer is a combiner, so it should be offered all the source
+files of the program. This is not strictly necessary, but it makes the
global optimizer more effective.
The current default optimization phases are:
.RS
options given in the source file.
See the ACK reference manual [4] for a list of options.
.IP "\-+xxx, \-\-xxx"
-When you want to interpret your program, you may select some
+When interpreting programs, these flags are used to select some
options during interpretation, like test, profile, flow, extra and count.
A short description of these flags follows:
.RS
count the memory cycles executed per source line.
.RE
.IP "" 5
-Test is on by default, the others are off. Normally, you give these
-flag options each time you run the interpreter.
-The EM assembler/linker gives you the opportunity to change
+Test is on by default, the others are off. Normally, these
+flag options are given each time the interpreter is run.
+The EM assembler/linker offers the opportunity to change
the defaults per program.
The changed options are recorded in the "e.out" header.
These flags \-\- and \-+ are passed to the assembler for this purpose.
Arguments may be flags, EM modules or libraries.
Flags recognized are:
.IP "-ss, -sm, -sl, -sx"
-Indicate that your program is small, medium, large, or extra large.
+Indicate that the program is small, medium, large, or extra large.
Large is the default.
.IP -p
List all procedure names together with base-address (decimal and octal),
or of the
form: Overflow in XXXX. The latter can usually be cured by giving
a -sx flag,
-the former means your program is too big, dimishing
+the former means the program is too big, dimishing
the size of very large procedures can sometimes help.
The most likely errors, however, are unresolved references,
probably caused by the omission of a library argument.
All diagnostics are written to the message file.
Diagnostics come in three flavors:
.IP \-
-(messages): These inform you about NOP instructions, give more information
+(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.
error telling why
.I led
chose to link it (which unresolved reference it resolves).
-This option is useful if you have 'multiply defined' problems.
+This option is useful in resolving 'multiply defined' problems.
.SH FILES
-~em/lib/em_led
+~em/lib.bin/em_led
a.out output file
.SH "SEE ALSO"
ack(1)
These files are only machine readable.
A description of this compact form can be found in [1].
To inspect the code produced by compilers or to patch them for one reason
-or another, you need human readable assembly code.
-Em_decode will do the job for you.
+or another, human readable assembly code is needed.
+Em_decode produces human readable assembly code from the compact form.
.PP
Em_decode accepts the normal compact form in both optimized and
-unoptimized form
+unoptimized form.
.PP
-Sometimes you have to make some special routines directly
-in EM, for instance the routines implementing the system calls.
-At these times you may use em_encode to produce compact routines
-out of these human readable assembly modules.
+Em_encode produces the compact form
+out of these human readable assembly code.
.PP
The first argument is the input file.
The second argument is the output file.
"Description of a machine architecture for use of
block structured languages" Informatica rapport IR-81.
.IP [2]
-ack(I)
+ack(1)
.SH DIAGNOSTICS
Error messages are intended to be self-explanatory.
.SH AUTHOR