a.out.5 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. .\" $Header$
  2. .TH A.OUT 5
  3. .SH NAME
  4. a.out \- universal assembler load format
  5. .SH DESCRIPTION
  6. The load files produced by the universal assemblers look very
  7. much alike.
  8. These load files consist of sequences of variable length
  9. records, each describing a part of the initialized memory.
  10. Bss type memory is left uninitialized by the universal assembler
  11. and has to be initialized at run-time.
  12. The EM header em_head will perform this task on most systems.
  13. Each record consists of a \fIcount\fP, an \fIaddress\fP and
  14. \fIcount\fP bytes.
  15. The first byte should be placed at \fIaddress\fP, the second at
  16. \fIaddress+1\fP, etc.
  17. .nf
  18. struct loadf {
  19. unsigned short l_addr[2] ; /* address */
  20. short l_cnt ; /* count */
  21. unsigned char data[] ; /* data */
  22. } ;
  23. .fi
  24. This representation is machine dependent in two ways.
  25. First, the byte order in the first three fields is the byte order
  26. of the machine the universal assembler is running.
  27. Second, the format of the address differs from machine to machine.
  28. .br
  29. For example, for the Intel 8086 the first entry contains a
  30. 16-bit offset and the second entry a segment number.
  31. The segment number has to be multiplied by 16 and added to
  32. the addres to obtain the address of the first byte to be
  33. initialized.
  34. .br
  35. The PDP 11 version stores the address in l_addr[0] and the type
  36. of the initialized memory in l_addr[1].
  37. Types 1 and 3 are absolute, 4 is text, 5 is data and 6 BSS.
  38. .br
  39. For all other currently available machines the
  40. array of shorts is 'replaced' by a long.
  41. This long contains the 32-bit address.
  42. .SH "SEE ALSO"
  43. uni_ass(VI)
  44. .SH BUGS