47 lines
1.6 KiB
Groff
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
|