A.OUT(5)

NAME
a.out - universal assembler load format

DESCRIPTION
The load files produced by the universal assemblers look very much alike. These load files consist of sequences of variable length records, each describing a part of the initialized memory. Bss type memory is left uninitialized by the universal assembler and has to be initialized at run-time. The EM header em_head will perform this task on most systems. Each record consists of a count, an address and count bytes. The first byte should be placed at address, the second at address+1, etc.
struct loadf {
        unsigned short  l_addr[2] ;     /* address */
        short           l_cnt ;         /* count */
        unsigned char   data[] ;        /* data */
} ;
This representation is machine dependent in two ways. First, the byte order in the first three fields is the byte order of the machine the universal assembler is running. Second, the format of the address differs from machine to machine.
For example, for the Intel 8086 the first entry contains a 16-bit offset and the second entry a segment number. The segment number has to be multiplied by 16 and added to the addres to obtain the address of the first byte to be initialized.
The PDP 11 version stores the address in l_addr[0] and the type of the initialized memory in l_addr[1]. Types 1 and 3 are absolute, 4 is text, 5 is data and 6 BSS.
For all other currently available machines the array of shorts is 'replaced' by a long. This long contains the 32-bit address.

SEE ALSO
uni_ass(VI)

BUGS