12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- .\" $Header$
- .TH A.OUT 5
- .SH NAME
- a.out \- universal assembler load format
- .SH 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 \fIcount\fP, an \fIaddress\fP and
- \fIcount\fP bytes.
- The first byte should be placed at \fIaddress\fP, the second at
- \fIaddress+1\fP, etc.
- .nf
- struct loadf {
- unsigned short l_addr[2] ; /* address */
- short l_cnt ; /* count */
- unsigned char data[] ; /* data */
- } ;
- .fi
- 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.
- .br
- 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.
- .br
- 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.
- .br
- For all other currently available machines the
- array of shorts is 'replaced' by a long.
- This long contains the 32-bit address.
- .SH "SEE ALSO"
- uni_ass(VI)
- .SH BUGS
|