EM_ASS(6)

NAME
em_ass - EM assembler/loader

SYNOPSIS
~em/lib/ack/em_ass [options] argument ...

DESCRIPTION
Em_ass assembles and links EM modules. Arguments may be flags, EM modules or libraries. Flags recognized are:

-ss, -sm, -sl, -sx
    Indicate that the program is small, medium, large, or extra large. Large is the default.

-p  List all procedure names together with base-address (decimal and octal), procedure number and module of definition.

-d  Used for debugging em_ass itself.

-U  With this flag, em_ass has exit status 0 even when there are unresolved references.

em_ass assembles and links together compact EM assembly language modules from files and libraries, producing an e.out file as described in [1].

Two different types of arguments are allowed:

1 - Compact EM assembly language modules (optimized or not), recognized by a magic number in the first word.
2 - UNIX archives, as maintained by arch(1). These archives must contain EM modules only.

EM modules may contain a library message specifying the names of procedures and external data defined inside the module. These will only be loaded if they contain definitions of procedures or data imported by previously assembled modules. When ack(1) is provided with the -LIB flag it tells the EM-optimizer em_opt(6) to insert a library messages when optimizing modules. The EM-archiver arch(1) can be used to create libraries from EM modules.

Note that it is not possible to do a partial load; loading starts from compact EM code and produces binary EM code. No symbol table and no relocation bits are produced.

SEE ALSO
ack(1), arch(1)
[1] A.S. Tanenbaum, Hans van Staveren, Ed Keizer and Johan Stevenson "Description of a machine architecture for use with block structured languages" Informatica report IR-81.

DIAGNOSTICS
Various diagnostics may be produced. In the case of compiler produced code the only messages to expect are "Out of memory" or of the form: Overflow in XXXX. The latter can usually be cured by giving a -sx flag, the former means the program is too big, diminishing 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.

AUTHOR
Ed Keizer, Vrije Universiteit