a.out

ëªì¹
     a.out — ì¤í ê°ë¥ ë°ì´ë¸ë¦¬íëì í¬ë§·

ìì
     <a.out.h>

í´ì¤
     ì¸í´ë£¨ë íì¼ ⟨a.out.h⟩ ê·¸ë¼ 3 ê°ì 구조체 ë¬¼ì´ êµ¬ëì¸ê°ì 매í¬ë¡ê°
     ì ì¸ëê³  ììµëë¤.  ì´ë¬í 구조체ë, ì´ ìì¤íì¼ë¡ ì¤í ê°ë¥í 기ê³ì´ ì½ë íì¼
     (‘ë°ì´ë리’) ì í¬ë§·ì ê·ì í©ëë¤.

     ë°ì´ë¸ë¦¬íëë ìµëë¡ 7 ê°ì ì¹ìì¼ë¡ë¶í° 구ì±ë©ëë¤.  ì´ë¬í ì¹ìì ììì
     주면(ì) ì´íì ê°ì´ ë©ëë¤:

     exec í¤ë    ë°ì´ë¸ë¦¬íë를 ë©ëª¨ë¦¬ìì ë¡ëí´ ì¤íí기 ìí´ì 커ëì´ ì´ì©íë
                 íë¼ë¯¸í°ë¥¼ í¬í¨íê³  ììµëë¤.  ì´ë¬í íë¼ë¯¸í°ë ë§í¬ ìëí° ld(1)
                 íì§ë§ ë°ì´ë¸ë¦¬íë를 ë¤ë¥¸ ë°ì´ë¸ë¦¬íëì ê²°í©í  ëìë
                 ì´ì©ë©ëë¤.  ì´ ì¹ìì ì ì¼í íì ì¹ììëë¤.

     íì¤í¸ ì¸ê·¸ë¨¼í¸(segment)
                 íë¡ê·¸ë¨ì´ ì¤íë  ëì ë©ëª¨ë¦¬ìì ë¡ë ëë¤ ê¸°ê³ì´ ì½ë ë° ê´ë ¨
                 ë°ì´í°ë¥¼ í¬í¨íê³  ììµëë¤.  ì½ê¸° ì ì©ì¼ë¡ ë¡ë ëë ê²½ì°ê°
                 ììµëë¤.

     ë°ì´í° ì¸ê·¸ë¨¼í¸
                 ì´ê¸°íì ë°ì´í°ë¥¼ í¬í¨íê³  ììµëë¤.  íì 기ìí´ ê°ë¥í
                 ë©ëª¨ë¦¬ìì ë¡ë ë©ëë¤.

     íì¤í¸ ì´ì   ë°ì´ë¸ë¦¬íë ê²°í©ìì íì¤í¸ ì¸ê·¸ë¨¼í¸(segment)ë´ì í¬ì¸í°ë¥¼
                 ìì í기 ìí´ì, ë§í¬ ìëí°ì ìí´ ì´ì©ëë ë ì½ë를 í¬í¨íê³  ììµëë¤.

     ë°ì´í° ì´ì
                 ì ì¶ì íì¤í¸ ì´ì  ì¹ìê³¼ ë®ì ììµëë¤ë§, ë°ì´í° ì¸ê·¸ë¨¼í¸ë´ì
                 í¬ì¸í° ìì ì©ìëë¤.

     ì¬ë³¼ íì´ë¸
                 ë°ì´ë¸ë¦¬íëê°ì ì´ë¦ 첨ë¶ì ë³ìë í¨ì (‘ì¬ë³¼’) ì 주ì ìí¸
                 참조를 í´ê²°í기 ìí´ì, ë§í¬ ìëí°ì ìí´ ì´ì©ëë ë ì½ë를
                 í¬í¨íê³  ììµëë¤.

     string table
                 ì¬ë³¼ëªì ëìíë ìºë¦í° ë¼ì¸ì í¬í¨íê³  ììµëë¤.

     ëª¨ë  ë°ì´ë¸ë¦¬íëë ë¤ìì exec êµ¬ì¡°ì²´ë¡ ììë©ëë¤:

           struct exec {
                   unsigned long   a_midmag;
                   unsigned long   a_text;
                   unsigned long   a_data;
                   unsigned long   a_bss;
                   unsigned long   a_syms;
                   unsigned long   a_entry;
                   unsigned long   a_trsize;
                   unsigned long   a_drsize;
           };

     ì´ë¬í íëë ì´íì 기ë¥ì ê°ì§ê³  ììµëë¤:

     a_midmag  ì´ íëë í¸ì¤í¸ì ë°ì´í¸ìì (host byte-order)ë¡ ê²©ë©ë©ëë¤.  ì´ íëë
               ëªê°ì ìë¸ ì»´í¼ëí¸ë¥¼ ê°ì§ê³  ìì´ ê·¸ê²ë¤ì ì´íì 매í¬ë¡
               N_GETFLAG(), N_GETMID(), N_GETMAGIC() ê·¸ë¦¬ê³  참조ëì´
               매í¬ë¡ N_SETMAGIC() ê·¸ë¦¬ê³  ì¤ì ë©ëë¤.

               매í¬ë¡ N_GETFLAG() (ì)ë ì´íì íë그를 ëë ¤ì¤ëë¤:

               EX_DYNAMIC  ì´ ì¤í ê°ë¥ íì¼ì´ ë°íì ë§í¬ ìëí°ì ìë¹ì¤ë¥¼ ì구íë
                           ê²ì ê°ë¦¬íµëë¤.

               EX_PIC      ì´ ì¤ë¸ì í¸ íì¼ì´ ìì¹ ë립 (position independent)ì¸
                           ì½ë를 í¬í¨íê³  ìë ê²ì ëíëëë¤.  ì´ íëê·¸ë ‘-k’
                           íëê·¸ ì§ì ìì as(1) ì ìí´ ì¤ì ëì´ íìíë©´ ld(1) (ì)ë
                           ì´ê²ì ë³´ì¡´í©ëë¤.

               EX_DYNAMIC ì EX_PIC ì ì쪽 모ëê° ì¸í¸ ëê³  ìë ê²½ì°, ê·¸
               ì¤ë¸ì í¸ íì¼ì ìì¹ ëë¦½ì¸ ì¤í ê°ë¥ ì´ë¯¸ì§ìëë¤ (ì: ê³µì
               íë¡ê·¸ë¨ ë¼ì´ë¸ë¬ë¦¬).  ì´ê²ì ë°íì ë§í¬ ìëí°ì ìí´ íë¡ì¸ì¤ì
               address ê³µê°ì ë¡ë ë©ëë¤.

               매í¬ë¡ N_GETMID() (ì)ë ë¨¸ì  ìë³ ì½ë (machine-id)를
               ëë ¤ì¤ëë¤.  ì´ê²ì, ë°ì´ë¸ë¦¬íëê° ì¤íëì´ì¼ í  ë¨¸ì ì ëíë´ê³
               ììµëë¤.

               N_GETMAGIC() (ì)ë magic number를 ëíëëë¤.  magic numberë
               ë°ì´ë¸ë¦¬íë ì¢ë³ì ì¼ìì ìë³í´, ì¬ë¬ê°ì§ ë¡ë ë°©ë²ì 구ë³í©ëë¤.
               ì´ íëë ì´íì ê°ì ì´ë쪽ì´ë  1 ê°(ì´)ì í¬í¨íì§ ìì¼ë©´ ìë©ëë¤:

               OMAGIC  íì¤í¸ ì¸ê·¸ë¨¼í¸(segment)ì ë°ì´í° ì¸ê·¸ë¨¼í¸ë í¤ëì ì§íì
                       ìì´, ì°ìíê³  ììµëë¤.  커ëì íì¤í¸/ë°ì´í° ì¸ê·¸ë¨¼í¸ì
                       ì쪽 모ë를 기ìí´ ê°ë¥ ë©ëª¨ë¦¬ areaì ë¡ëí©ëë¤.

               NMAGIC  OMAGIC (ì)ê³¼ ê°ì´, íì¤í¸/ë°ì´í° ì¸ê·¸ë¨¼í¸ë í¤ëì ì§íì
                       ìì´, ì°ìíê³  ììµëë¤.  ê·¸ë¬ë, 커ëì íì¤í¸
                       ì¸ê·¸ë¨¼í¸(segment)를 ì½ì´ë¤ì¬ ì ì© ë©ëª¨ë¦¬ areaì
                       ë¡ëí´, íì¤í¸ì ê³ìëë íì´ì§ ê²½ê³ë¡ë¶í° ììëë¤ ê¸°ì ê°ë¥
                       ë©ëª¨ë¦¬ areaì ë°ì´í° ì¸ê·¸ë¨¼í¸ë¥¼ ë¡ëí©ëë¤.

               ZMAGIC  커ëì ê°ê°ì íì´ì§ë¥¼ íìì ë°ë¼ì ë°ì´ë리ë¡ë¶í° ë¡ëí©ëë¤.
                       í¤ë, íì¤í¸ ì¸ê·¸ë¨¼í¸(segment) ë° ë°ì´í° ì¸ê·¸ë¨¼í¸ë
                       모ë, íì´ì§ ì¬ì´ì¦ì ë°°ìì í¬ê¸°ê° ëëë¡, ë§í¬ ìëí°ì ìí´
                       í¨ë© ë©ëë¤.  커ëì´ íì¤í¸ ì¸ê·¸ë¨¼í¸(segment)ë¡ë¶í°
                       ë¡ëí íì´ì§ë ì½ì´ë¤ì¬ ì ì©ìëë¤ë§, ë°ì´í°
                       ì¸ê·¸ë¨¼í¸ë¡ë¶í° ë¡ëí íì´ì§ë 기ìí´ ê°ë¥í©ëë¤.

     a_text    íì¤í¸ ì¸ê·¸ë¨¼í¸(segment)ì ì¬ì´ì¦ (ë°ì´í¸ ë¨ì)를 ë³´ê´
               ì ì§í©ëë¤.

     a_data    ë°ì´í° ì¸ê·¸ë¨¼í¸ì ì¬ì´ì¦ (ë°ì´í¸ ë¨ì)를 ë³´ê´ ì ì§í©ëë¤.

     a_bss     ‘bss ì¸ê·¸ë¨¼í¸(segment)’ ì ë°ì´í¸ì를 ë³´ê´ ì ì§í©ëë¤.  ì´ ê°ì
               커ëì´ ìµì´ì break ì¹ (brk(2)) (ì)를 ë°ì´í° ì¸ê·¸ë¨¼í¸ì ë¤ë¡
               ì¤ì íëë° ì´ì©ë©ëë¤.  커ëì, ì¬ê¸°ì ëíëë ì¬ì´ì¦ì 기ì ê°ë¥
               ë©ëª¨ë¦¬ areaê° ë°ì´í° ì¸ê·¸ë¨¼í¸ì ë¤ë¡ ì¤ë¹ëì´ ê·¸ë¬í ì´ê¸°
               ìíê° 0 ì´ ëëë¡(ë¯ì´), íë¡ê·¸ë¨ì ë¡ëí©ëë¤.  (bss = ì¬ë³¼ë¡ ê°ìíë
               ë¸ë¡ (block started by symbol))

     a_syms    ì¬ë³¼ íì´ë¸ ì¹ìì ì¬ì´ì¦ (ë°ì´í¸ ë¨ì)를 ë³´ê´ ì ì§í©ëë¤.

     a_entry   커ëì´ ë°ì´ë¸ë¦¬íë를 ë¡ëí íì, íë¡ê·¸ë¨ì ìí¸ë¦¬ í¬ì¸í¸ì
               ë©ëª¨ë¦¬ìëë ì¤ë¥¼ ë³´ê´ ì ì§í©ëë¤.  커ëì, ì´ ì£¼ìì ìë 기ê³
               ì¸ì¤í¸ëìì¼ë¡ë¶í° íë¡ê·¸ë¨ì ì¤íì ê°ìí©ëë¤.

     a_trsize  íì¤í¸ ì´ì  íì´ë¸ì ì¬ì´ì¦ (ë°ì´í¸ ë¨ì)를 ë³´ê´ ì ì§í©ëë¤.

     a_drsize  ë°ì´í° ì´ì  íì´ë¸ì ì¬ì´ì¦ (ë°ì´í¸ ë¨ì)를 ë³´ê´ ì ì§í©ëë¤.

     ì¸í´ë£¨ë íì¼ a.out.h ê·¸ë¼, exec 구조체를 ì´ì©í´ ì¼ê´ì±ì íì¤í¸íê±°ë
     ë°ì´ë¸ë¦¬íëì¤ì ì¹ì ì¤íì(offset)를 ì기 ìí 매í¬ë¡ê° ì ìëê³  ììµëë¤.

     N_BADMAG(exec)  a_magic íëì, ì¸ìí  ì ìë ê°ì´ í¬í¨ëì´ ìë ê²½ì°, ë¹ 0 ì
                     ëë ¤ì¤ëë¤.

     N_TXTOFF(exec)  ë°ì´ë¸ë¦¬íëì ìì´ìì íì¤í¸ ì¸ê·¸ë¨¼í¸(segment)ì ì ëì ë°ì´í¸
                     ì¤íì(offset)를 ëë ¤ì¤ëë¤.

     N_SYMOFF(exec)  ì¬ë³¼ íì´ë¸ì ì ëì ë°ì´í¸ ì¤íì(offset)를 ëë ¤ì¤ëë¤.

     N_STROFF(exec)  ìºë¦í° ë¼ì¸ íì´ë¸ì ì ëì ë°ì´í¸ ì¤íì(offset)를 ëë ¤ì¤ëë¤.

     ì´ì  ë ì½ëë, relocation_info êµ¬ì¡°ì²´ë¡ ê·ì ëë íì¤ í¬ë§·ìëë¤:

           struct relocation_info {
                   int             r_address;
                   unsigned int    r_symbolnum : 24,
                                   r_pcrel : 1,
                                   r_length : 2,
                                   r_extern : 1,
                                   r_baserel : 1,
                                   r_jmptable : 1,
                                   r_relative : 1,
                                   r_copy : 1;
           };

     relocation_info 구조체ì ê° íëë ì´íì ê°ì´ ì´ì©ë©ëë¤:

     r_address    ë§í¬ ìëí¸ê° íìí í¬ì¸í°ì ë°ì´í¸ ì¤íì(offset)를 ë³´ê´
                  ì ì§í©ëë¤.  íì¤í¸ ì´ì  ì¤íì(offset)ë íì¤í¸
                  ì¸ê·¸ë¨¼í¸(segment)ì ì ëë¡ë¶í°, ë°ì´í° ì´ì  ì¤íì(offset)ë
                  ë°ì´í° ì¸ê·¸ë¨¼í¸ì ì ëë¡ë¶í°, ê°ê° ê³ì°í©ëë¤.  ë§í¬ ìëí°ë ì´
                  ì¤íì(offset)ì ì¤í ì´ ëê³  ìë ê°ì ê°ì°í´, ì´ ì´ì  ë ì½ë를
                  ì´ì©í´ ê³ì°í ìë¡ì´ ê°ì¼ë¡ ë³íí©ëë¤.

     r_symbolnum  ì¬ë³¼ íì´ë¸ì ìì´ìì ì¬ë³¼ 구조체ì ìì ë²í¸ ( ë°ì´í¸
                  ì¤íì(offset) ê° ìëëë¤ )(ì)를 ë³´ê´ ì ì§í©ëë¤.  ë§í¬ ìëí°ë
                  ì´ ì¬ë³¼ì ì ë 주ì를 í´ê²°í í, ê·¸ 주ì를 ì´ì ì¤ì í¬ì¸í°ì
                  ê°ì°í©ëë¤.  (ë§ì½ r_extern ë¹í¸ê° ìì§ ìì¼ë©´ ìí©ì ë¤ë¦ëë¤.
                  ì´í를 ì°¸ì¡°í´ ì£¼ì¸ì. )

     r_pcrel      ë§ì½ ì´ ë¹í¸ê° ì ìì¼ë©´, ë§í¬ ìëí°ë, PC ìë ì ëë ì±ì ì´ì©íë
                  기ê³ì´ ì¸ì¤í¸ëìì ì¼ë¶ì´ë¤ í¬ì¸í°ë¥¼ ê°±ì íê³  ìë ê²ê³¼
                  ê°ì í©ëë¤.  리ë¡ì¼ì´í¸ ëë í¬ì¸í°ì 주ìë, ì¤íì¤ì íë¡ê·¸ë¨ì´
                  ê·¸ê²ì ì´ì©í  ëì, ì묵ì ì¼ë¡ ê·¸ ê°ì ê°ì°ë©ëë¤.

     r_length     í¬ì¸í°ì 길ì´ë¥¼ 2 를 ë°ë¥ì¼ë¡ íë ëìë¡ ëíë¸ ë°ì´í¸ ë¨ìë¡
                  ë³´ê´ ì ì§í©ëë¤.  1 ë°ì´í¸ëì¤íë ì´ì¤ë¨¼í¸ë¼ë©´ 0, 2
                  ë°ì´í¸ëì¤íë ì´ì¤ë¨¼í¸ë¼ë©´ 1, 4 ë°ì´í¸ëì¤íë ì´ì¤ë¨¼í¸ë¼ë©´ 2
                  ê° ë©ëë¤.

     r_extern     ì´ ì´ì ì´ ì¸ë¶ 참조를 íìë¡ íê³  ìë ê²½ì°ì ì¸í¸ ë©ëë¤.
                  ë§í¬ ìëí°ë, ì¬ë³¼ 주ì를 ì´ì©í´ ì´ í¬ì¸í°ë¥¼ ê°±ì íì§
                  ìì¼ë©´ ìë©ëë¤.  r_extern ë¹í¸ê° ìì§ ìì ê²½ì°, ê·¸ ì´ì ì
                  ‘ë¡ì»¬’ ìëë¤.  ë§í¬ ìëí°ë, ì¬ë³¼ì¹ì ë³íê° ìëê³ , ê°
                  ì¸ê·¸ë¨¼í¸(segment)ì ë¡ë 주ìì ë³íì ìí´ í¬ì¸í°ë¥¼ ê°±ì í©ëë¤
                  (ë¤ë§, r_baserel ë ì¸í¸ ëê³  ìë ê²½ì°(íì )ë ì ì¸í©ëë¤).  ì´
                  ê²½ì°, r_symbolnum íëì ë´ì©ì n_type ì ê°ì´ ë©ëë¤(íì ).  ë§í¬
                  ìëí°ë, ì´ íí íëë¡ë¶í°, 리ë¡ì¼ì´í¸ ëë í¬ì¸í°ê° ì´ë
                  ì¸ê·¸ë¨¼í¸(segment)를 ê°ë¦¬í¤ê³  ìëì§ì ì 보를 ì»ìµëë¤.

     r_baserel    ì¸í¸ ëê³  ìë ê²½ì°, r_symbolnum íëìì ì§ì ëë ê²½ì°ì ê°ì´, ì´
                  ì¬ë³¼ì ê¸ë¡ë² ì¤íì(offset) íì´ë¸ìì ì¤íì(offset)ì 리ë¡ì¼ì´í¸
                  ë©ëë¤.  ì¤íìì, ê¸ë¡ë² ì¤íì(offset) íì´ë¸ì¤ì, ì´ ì¤íì(offset)
                  ìì¹ì ìë¤ ìí¸ë¦¬ê°, ì¬ë³¼ì 주ì를 ê°ì§ëë¡(ë¯ì´) ì¸í¸ ë©ëë¤.

     r_jmptable   ì¸í¸ ëê³  ìë ê²½ì°, r_symbolnum íëìì ì§ì ëë ê²½ì°ì ê°ì´, ì´
                  ì¬ë³¼ì íë¡ìì  ë§í¤ì§ íì´ë¸ìì ì¤íì(offset)ì 리ë¡ì¼ì´í¸
                  ë©ëë¤.

     r_relative   ì¸í¸ ëê³  ìë ê²½ì°, ì´ ì´ì ì, ì´ ì¤ë¸ì í¸ íì¼ì´ í¬í¨ëë¤
                  ì´ë¯¸ì§ì (ì¤íìì) ë¡ë 주ììì ìëì¹ê° ë©ëë¤.  ì´ë° ì¢ë¥ì ì´ì ì
                  ê³µì  ì¤ë¸ì í¸ìê²ë§ ëíë©ëë¤.

     r_copy       ì¸í¸ ëê³  ìë ê²½ì°, ì´ ì´ì  ë ì½ëë, ê·¸ ë´ì©ì r_address
                  ê·¸ë¦¬ê³  ì§ì ëë ìì¹ì ì¹´í¼í´ì¼ íë ì¬ë³¼ì ëíëëë¤.  ì¹´í¼
                  ì²ë¦¬ë, ì¤íìì ë§í¬ ìëí°ì ìí´, ê³µì  ì¤ë¸ì í¸ì¤ì ì ì í ë°ì´í°
                  ìì´íì¼ë¡ë¶í° íí´ì§ëë¤.

     ì¬ë³¼ì ì´ë¦ê³¼ 주ì를 ëì ì§ìµëë¤ (ë³´ë¤ ì¼ë°ì ì¼ë¡ë, ìºë¦í° ë¼ì¸ì ê°ì ëì
     ì§ìµëë¤).  ë§í¬ ìëí°ê° 주ì를 ì¡°ì í기 ìí´(ë문ì), ì ëì¹ë¥¼ í ë¹í  ì
     ììì§ë ì¬ë³¼ì ì´ì©í´ 주ì를 íííì§ ìì¼ë©´ ëì§ ììµëë¤.  ì¬ë³¼ì, ì¬ë³¼
     íì´ë¸ì¤ì ê³ ì ì¥ì ë ì½ëì ìºë¦í° ë¼ì¸ íì´ë¸ì¤ì ê°ë³ì¥ì ì´ë¦ì¼ë¡ë¶í°
     ìì±ë©ëë¤.  ì¬ë³¼ íì´ë¸ì nlist 구조체ì ë°°ì´ìëë¤:

           struct nlist {
                   union {
                           char    *n_name;
                           long    n_strx;
                   } n_un;
                   unsigned char   n_type;
                   char            n_other;
                   short           n_desc;
                   unsigned long   n_value;
           };

     ì´ë¬í íëë ì´íì ê°ì´ ì´ì©ë©ëë¤:

     n_un.n_strx  ì´ ì¬ë³¼ì ì´ë¦ì, ìºë¦í° ë¼ì¸ íì´ë¸ììì ë°ì´í¸ ì¤íì(offset)를
                  ë³´ê´ ì ì§í©ëë¤.  íë¡ê·¸ë¨ì´ nlist(3) í¨ì를 ì´ì©í´ ì¬ë³¼
                  íì´ë¸ì ì¡ì¸ì¤ íë ê²½ì°, ì´ íëë, ë©ëª¨ë¦¬ì¤ì ìºë¦í° ë¼ì¸ìì
                  í¬ì¸í°ì´ë¤ n_un.n_name íëë¡ ì®ê²¨ì§ëë¤.

     n_type       ë§í¬ ìëí°ê° ì¬ë³¼ì¹ì ê°±ì  ë°©ë²ì ê²°ì íëë° ì´ì©ë©ëë¤.
                  n_type íëë, ë¹í¸ ë§ì¤í¬ë¥¼ ì´ì©í 3 ê°ì subfieldë¡ ëë ì
                  ììµëë¤.  ë§í¬ ìëí°ë N_EXT ë¹í¸ê° ì¸í¸ ëê³  ìë ì¬ë³¼ì
                  ‘external’ ì¬ë³¼ë¡ì ì·¨ê¸í´, ë¤ë¥¸ ë°ì´ë¸ë¦¬íëë¡ë¶í°ì
                  참조를 íê°í©ëë¤.  N_TYPE ë§ì¤í¬ë ë§í¬ ìëí°ì íìí ë¹í¸ë¥¼
                  ì íí©ëë¤:

                  N_UNDF  미ì ë리 ì¬ë³¼.  ë§í¬ ìëí°ë, ë¤ë¥¸ ë°ì´ë¸ë¦¬íëì¤ì
                          ê°ì ì´ë¦ì ì¸ë¶ ì¬ë³¼ì ì°¾ì ì´ ì¬ë³¼ì ì ëì¹ë¥¼
                          ê²°ì íì§ ìì¼ë©´ ìë©ëë¤.  í¹ë³í ê²½ì°ë¡ì ë§ì½ n_value
                          íëê° ë¹ 0 ì¼ë¡, ë§í¬ ìëí¸ ëìì ì´ë ë°ì´ë¸ë¦¬íëë ì´
                          ì¬ë³¼ì ì ìíê³  ìì§ ìë ê²½ì°, ë§í¬ ìëí°ë ì´ ì¬ë³¼ì´
                          bss ì¸ê·¸ë¨¼í¸(segment)ì¤ì 주ìì´ë¼ê³  ê°ì£¼,
                          n_value ì ëì¼í ë°ì´í¸ìì area를 ìì½í©ëë¤.  ë§ì½ ì´
                          ì¬ë³¼ì´ ë³µìì ë°ì´ë¸ë¦¬íëì¤ìì 미ì ëë¦¬ê° ëê³  ìì´
                          ê·¸ë¬í ë°ì´ë¸ë¦¬íëê°ì ì¬ì´ì¦ê° ì°¨ì´ê° ëë ê²½ì°,
                          ë§í¬ ìëí°ë ê·¸ë¬í ì¬ì´ì¦ì ìµëì¹ë¥¼ ì íí©ëë¤.

                  N_ABS   ì ë ì¬ë³¼.  ë§í¬ ìëí°ë ì ë ì¬ë³¼ì ê°±ì íì§ ììµëë¤.

                  N_TEXT  íì¤í¸ ì¬ë³¼.  ì´ ì¬ë³¼ì ê°ì íì¤í¸ 주ìì´ë©°, ë§í¬
                          ìëí°ë ë°ì´ë¸ë¦¬íë를 merge í  ë, ê·¸ ê°ì ê°±ì í©ëë¤.

                  N_DATA  ë°ì´í° ì¬ë³¼.  N_TEXT (ì)ê³¼ ê°ìµëë¤ë§, ë°ì´í°
                          주ì를 ëíëëë¤.  íì¤í¸ ì¬ë³¼ ë° ë°ì´í° ì¬ë³¼ì ê°ì,
                          íì¼ ì¤íì(offset)ë ìëê³  주ììëë¤.  íì¼
                          ì¤íì(offset)를 ë³µìí기 ìí´ì(ë문ì), ëìíë ì¹ìì ì ëì
                          ë¡ë 주ì를 ì°¾ìë´ ê·¸ê²ì ì¤ì¬ ë¤ìì ê·¸ ì¹ìì
                          ì¤íì(offset)를 ê°ì°í  íìê° ììµëë¤.

                  N_BSS   bss ì¬ë³¼. íì¤í¸ ì¬ë³¼ì´ë ë°ì´í° ì¬ë³¼ê³¼ ë®ì
                          ììµëë¤ë§, ë°ì´ë¸ë¦¬íëì¤ì ëìíë ì¤íì(offset)를 ê°ì§ì§
                          ììµëë¤.

                  N_FN    íì¼ëª ì¬ë³¼.  ë°ì´ë¸ë¦¬íë를 merge í  ë, ë§í¬ ìëí°ë
                          ë°ì´ë¸ë¦¬íëì ë¤ë¥¸ ì¬ë³¼ì ì ì ì´ ì¬ë³¼ì ì½ìí©ëë¤.
                          ì´ ì¬ë³¼ì ì´ë¦ì ë§í¬ ìëí°ìê² ì¤ ì ììë íì¼ëªì¼ë¡,
                          ì¬ë³¼ì ê°ì ë°ì´ë¸ë¦¬íëë¡ë¶í° ì»ì ì ë íì¤í¸ 주ììëë¤.
                          íì¼ëª ì¬ë³¼ì 린í¬ìëí¸ ì²ë¦¬ë ë¡ë ì²ë¦¬ìë
                          ë¶íìí©ëë¤ë§, ëë²ê±°ìë ì ì©í ì ë³´ìëë¤.

                  N_STAB ë§ì¤í¬ë gdb(1) ë±ì ìì§ì  ëë²ê±°ì íìí ë¹í¸ë¥¼
                  ì íí©ëë¤.  ê·¸ ê°ì stab(5) ì ëíëê³  ììµëë¤.

     n_other      ì´ íëë, n_type íëìì ê²°ì ëë ì¸ê·¸ë¨¼í¸(segment)ì ê´í´ì, ê·¸
                  ì¬ë³¼ì ë¡ì¼ì´ìê³¼ë ë립íë¤ ì¬ë³¼ì í¹ì§ì ê´í ì 보를
                  ì ê³µí©ëë¤.  íì¬ë¡ìë, n_other íëì íì 4 ë¹í¸ë AUX_FUNC í¹ì
                  AUX_OBJECT ì ì´ë쪽ì´ë ì ì·¨í©ëë¤ (ì´ë¬í ì ìì ëí´ìë ⟨link.h⟩
                  (ì)를 ì°¸ì¡°í´ ì£¼ì¸ì).  AUX_FUNC (ì)ë ì¬ë³¼ì´ë¼ê³
                  ë¶ë¥´ê¸° ììí´ ê°ë¥í í¨ì를 ê´ë ¨ ì§ì´ íí¸, AUX_OBJECT (ì)ë
                  ì¬ë³¼ê³¼ ë°ì´í°ë¥¼ ê´ë ¨ ì§ìµëë¤.  ì´ë¬í ê´ë ¨ì íì¤í¸
                  ì¸ê·¸ë¨¼í¸(segment)/ë°ì´í° ì¸ê·¸ë¨¼í¸ì ë³ëì´ë¤ê³ ë
                  무ê´ê³í©ëë¤.  ì´ íëë, ld(1) íì§ë§ ëì ì¸ ì¤í ê°ë¥ íìì
                  구ì¶í기 ìí´ì ì¬ì©íë ê²ì ìëíê³  ììµëë¤.

     n_desc       ëë²ê±°ì©ì¼ë¡ ìì½ëê³  ìì´ ë§í¬ ìëí°ë ì´ íë를 ì í ë³ê²½íì§
                  ììµëë¤.  ëë²ê±°ì ë°ë¼ì ë¤ë¥¸ 목ì ì¼ë¡ ì¬ì©ë©ëë¤.

     n_value      ì¬ë³¼ì ê°ì ë³´ê´ ì ì§í©ëë¤.  íì¤í¸, ë°ì´í° ë° bss ì¬ë³¼ì
                  ê²½ì°, ê·¸ ê°ì 주ììëë¤.  ë¤ë¥¸ ì¬ë³¼ (ì를 ë¤ë©´ ëë²ê±°
                  ì¬ë³¼ë± )ì ê²½ì°, ê·¸ ê°ì ì¬ë¬ê°ì§ìëë¤.

     ìºë¦í° ë¼ì¸ íì´ë¸ì unsigned long ííì 길ì´ì 거기ì ê³ìëë ë ì¢ë¨ì ì¬ë³¼
     ìºë¦í° ë¼ì¸ì¼ë¡ë¶í° ìì±ë©ëë¤.  ì´ ê¸¸ì´ë, íì´ë¸ ì ì²´ì ì¬ì´ì¦ë¥¼ ë°ì´í¸
     ë¨ìë¡ ëíëëë¤.  ì¦, ê·¸ ìµìì¹ (ë°ê¿ ë§íë©´, ìµì´ì ìºë¦í° ë¼ì¸ì
     ì¤íì(offset))ë, 32 ë¹í¸ 머ì ììë íì 4 ê° ë©ëë¤.

ê´ë ¨ í목
     as(1), gdb(1), ld(1), brk(2), execve(2), nlist(3), core(5), elf(5),
     link(5), stab(5)

ìì¬
     ì¸í´ë£¨ë íì¼ a.out.h í Version 7 AT&T UNIX ê·¸ë¦¬ê³  ë±ì¥íìµëë¤.

ë²ê·¸
     ë°ëì ëª¨ë  ìí¬í¸ ëì ìí¤íì³ê° a_midmag íë를 ì´ì©íë ê²ì ìë기 ë문ì, ì´ë
     ë°ì´ëë¦¬ê° ì´ë í ìí¤íì³ììì ì¤íëëì§ë, ì¤ì ì ë¨¸ì  ì½ë를 ì¡°ì¬íì§ ìë í íì
     곤ëí ê°ë¥ì±ì´ ììµëë¤.  ë¨¸ì  ID ê° ììë¤ê³  í´ë, exec í¤ëì ë°ì´í¸ììë
     ë¨¸ì  ìì¡´ìëë¤.