A.OUT(5)
XENIX System V (1 ÿíâapÿ 1989)

ÈÌß
a.out - Ôopìaò ôaéëa, ïoëy÷aeìoão â peçyëüòaòe paáoòû ïpoãpaìì acceìáëèpoâaíèÿ è peäaêòopa câÿçeé.

ÎÏÈÑÀÍÈÅ
A.out ÿâëÿeòcÿ peçyëüòèpyþùèì ôaéëoì ïocëe çaâepøeíèÿ paáoòû ïpoãpaìì acceìáëepa masm è peäaêòopa câÿçeé ld. Ecëè â ïpoöecce paáoòû êaæäoé èç ýòèx ïpoãpaìì íe áûëè oáíapyæeíû oøèáêè èëè íeoïpeäeëeííûe ãëoáaëüíûe ïepeìeííûe, áyäeò coçäaí ôaéë fa.out.

Ôopìaò ôaéëa a.out, íaçûâaeìûé òaêæe x.out èëè ceãìeíòèpoâaííûé x.out, oïpeäeëÿeòcÿ ôaéëaìè /usr/include/a.out.h è /usr/include/sys/relsym.h. Ôaéë a.out èìeeò cëeäyþùèe ocíoâíûe ÷acòè:

  1. Çaãoëoâoê
  2. Äoïoëíèòeëüíûé çaãoëoâoê
  3. Taáëèöa ceãìeíòa ôaéëa (äëÿ ceãìeíòèpoâaííûx ôopìaòoâ)
  4. Ceãìeíòû (Teêcò, äaííûe, cèìâoëû è câeäêíèÿ äëÿ íacòpoéêè)

B ceãìeíòèpoâaííoì ôopìaòe ìoãyò cyùecòâoâaòü íecêoëüêo ceãìeíòoâ òeêcòoâ è äaííûx, â çaâècèìocòè oò ìoäeëè ïaìÿòè ïpoãpaììû. Ceãìeíòû â ôaéëe ía÷èíaþòcÿ c aäpeca, êpaòíoão paçìepy còpaíèöû ôaéëa (512 áaéò).

ÔOPÌAÒ


     /*

     *Ocíoâíoé è äoïoëíèòeëüíûé çaãoëoâoê còpyêòyp.

     *Äëÿ ceãìeòèpoâaííoão ôopìaòa x.out (XE_SEG):

     *    1)ïoëÿ, ìapêèpoâaííûe (s) äoëæíû

        *         coäepæaòü cyììy âcex xs_psize,

                  ecëè oápaç íaxoäèòcÿ ía äècêe

        *         èëè xs_vsize äëÿ oápaça ïaìÿòè.

     *    2)coäepæèìoe oáëacòeé, ìapêèpoâaííûx

        *          (u) íeoïpeäeëeío.

     */



struct xexec{         /*çaãoëoâoê x.out*/

  unsigned short x_magic; /*ìaãè÷ecêoe ÷ècëo*/

  unsigned short x_ext;    /*paçìep äoïoëíèòeëüíoão

                                  çaãoëoâêa*/

  long    X-Text;             /*paçìep ceãìeíòa òeêcòa (s)*/

  long    x_data;             /*paçìep èíèöèaëèçèpoâaííûx

                            äaííûx (s)*/

  long    x_bss;              /*paçìep íeèíèöèaëèçèpoâaííûx

                   äaííûx (s)*/

  long    syms;               /*paçìep òaáëèöû cèìâoëoâ (s)*/

  long    x_reloc;    /*äëèía òaáëèöû ïepeìeùeíèé (s)*/

  long    x_entry;    /*ìaøèíío çaâècèìaÿ òo÷êa âxoäa*/

  char    x_cpu;              /*òèï ïpoöeccopa è ïopÿäoê áaéò/cëoâo*/

  char    x_relsym;   /*ôopìò ïepeìeùeíèé è cèìâoëoâ (u)*/

  unsigned short x_renv;  /* cpeäa âûïoëíeíèÿ*/

};





struct xext {         /* äoïoëíèòeëüíûé çaãoëoâoê x.out  */

  long    xe_trsize;       /* paçìep òaáëèöû ïepeìeùeíèé òeêcòa (s) */

  long    xe_drsize;       /* paçìep òaáëèöû ïepeìeùeíèé äaííûx (s) */

  long    xe_tbase;   /* áaça ïepeìeùaeìoão òeêcòa(u) */

  long    xe_dbase;   /* áaça ïepeìeùaeìûx äaííûx(u) */

  long    xe_stksize;      /* paçìep còeêa

                           (ecëè XE_FS ycòaíoâëeí)     */



/* cëeäyþùèe äaëee ýëeìeíòû äoëæíû áûòü ïpeäcòaâëeíû

   ecëè XE_SEG ycòaíoâëeí */



  long    xe_segpos;       /* ïoëoæeíèe òaáëèöû ceãìeíòoâ */

  long    xe_segsize;      /* paçìep òaáëèöû ceãìeíòoâ */

  long    xe_mdtpos;       /* ìaøèíío çaâècèìoe ïoëoæeíèe */

  long    xe_mdtsize;       /* ìaøèíío çaâècèìûé paçìep òaáëèöû */

  char    xe_mdttype;       /* ìaøèíío çaâècèìûé òèï òaáëèöû */

  char    xe_pagesize;     /* paçìep còpaíèöû ôaéëa, êpaòíoe 512 */

  char    xe_ostype;        /* òèï oïepaöèoííoé cècòeìû */

  char    xe_osvers;        /* âepcèÿ oïepaöèoííoé cècòeìû */

  unsigned short xe_eseg;  /*ceãìeíò âxoäa, çaâècèìûé

                           oò aïïapaòypû */

  unsigned short xe_sres;  /* peçepâèpoâaí */

};







struct xseg {          /* òaáëèöa ceãìeíòoâ x.out  */

  unsigned short xs_type;  /*òèï ceãìeíòa */

  unsigned short xs_attr;  /*aòpèáyòû ceãìeíòa */

  unsigned short xs_seg;   /*íoìep ceãìeíòa */

  char    xs_align;    /* ëoãapèôì ïo ocíoâaíèþ 2

                              oò âûpaâíèâaíèÿ */

  char    xs_cres;     /* íeècïoëüçyeòcÿ*/

  long    xs_filpos;        /* ïoëoæeíèe ôaéëa */

  long    xs_psize;    /* ôèçè÷ecêèé paçìep (â ôaéëe) */

  long    xs_vsize;    /* âèpòyaëüíûé paçìep (in core) */

  long    xs_rbase;    /* aäpec/cìeùeíèe áaçû ïepeìeùeíèÿ */

  unsigned short xs_noff;  /* cìeùeíèe äo èìeíè ceãìíòa â òaáëèöe ceãìeíòoâ

                              ceãìeíòa */

  unsigned short xs_sres;  /* íeècïoëüçyeòcÿ*/

  long    xs_lres;     /* íeècïoëüçyeòcÿ */

};



struct xiter {            /* çaïècü ïoâòopeíèé x.out  */

  long    xi_size;     /* source byte count */

  long    xi_rep;      /* replication count */

  long    xi_offset;        /* destination offset in segment */

};



struct xlist {            /* xlist còpyêòypa äëÿ xlist(3). */

  unsigned short xl_type;  /* òèï cèìâoëa */

  unsigned short xl_seg;   /* èíäeêc òaáëèöû ceãìeíòa ôaéëa */

  long    xl_value;    /* âeëè÷èía cèìâoëa */

  char    *xl_name;    /* yêaçaòeëü ía èìÿ, oãpaíè÷eííoe íyëeì */

};



struct aexec { /* çaãoëoâoê a.out */

  unsigned short xa_magic;    /* ìaãè÷ecêoe ÷ècëo */

  unsigned short xa_text;     /* paçìep ceãìeíòa òeêcòa*/

  unsigned short xa_data;     /* paçìep èíèöèaëèçèpoâaííûx äaííûx */

  unsigned short xa_bss;        /* paçìep íeèíèöèaëèçèpoâaííûx äaííûx */

  unsigned short xa_syms;     /* paçìep òaáëèöû cèìâoëoâ */

  unsigned short xa_entry;    /* òo÷êa âxoäa */

  unsigned short xa_unused;   /* íe ècïoëüçyeòcÿ */

  unsigned short xa_flag;     /* ôëaã oòcyòcâèÿ òaáëèöû èìeí */

};





struct nlist {                 /* nlist còpyêòypa äëÿ nlist(3). */

  char    n_name[8];             /* èìÿ cèìâoëa */

  int         n_type;            /* ôëaã òèïa*/

  unsigned  n_value;             /* âeëè÷èía */

};



struct bexec {                  /* çaãoëoâoê b.out */

  long xb_magic;                /* ìaãè÷ecêoe ÷ècëo */

  long xb_text;                 /* paçìep ceãìeíòa òeêcòa*/

  long xb_data;                 /* paçìep ceíìeíòa äaííûx*/

  long xb_bss;                  /* paçìep íeèíèöèaëèçèpoâaííûx äaííûx */

  long xb_syms;                 /* paçìep òaáëèöû cèìâoëoâ*/

  long xb_trsize;               /* paçìep òaáëèöû ïepeìeùeíèÿ

                                   òeêcòa*/

  long xb_drsize;               /* paçìep òaáëèöû ïepeìeùeíèÿ

                                   äaííûx*/

  long xb_entry;                /* òo÷êa âxoäa*/

};

ÑÌ. ÒÀÊÆÅ
masm(1), ld(1), nm(1), strip(1), xlist(1).