Server for Information Technologies Ñåðâåð ïîääåðæèâàåòñÿ
Öåíòðîì Èíôîðìàöèîííûõ Òåõíîëîãèé
(095) 932-9212, 932-9213, 939-0783
E-mail: info@citforum.ru
Ñåðâåð ñîäåðæèò ìîðå(!) àíàëèòè÷åñêîé èíôîðìàöèè CIT Forum CD-ROM

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).
Comments: info@citmgu.ru
Designed by Andrey Novikov
Copyright © CIT