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