ack/man/a.out.5
1984-07-12 15:18:13 +00:00

47 lines
1.6 KiB
Groff

.\" $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