· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Assembly-HOWTO

<!doctype linuxdoc system>
<article>

<title>¾î  ¼À  ºí  ¸®   H O W T O    V 0 . 3 C              
<author>¿øÀúÀÚ : Francois-Rene Rideau <url url="mailto:rideau@ens.fr" name="rideau@ens.fr">
<date>¹ö  Á¯ : 1996.6.15 0.3C
<trans>¹ø¿ªÀÚ : Çѵ¿ÈÆ      <url url="mailto:ddoch@hitel.kol.co.kr" name="ddoch@hitel.kol.co.kr">
<tdate>¹ø¿ªÀÏ : 1996.9.27
<abstract>
( ¹ø¿ªÁÖ: ÀÌ ¹ø¿ª¹®¼­´Â ºÎÁ·ÇÑ ÀúÀÇ ¹®Àå½Ç·ÂÀ¸·Î Çʿ伺¿¡ ÀÇÇÏ¿© ¹ø¿ªÇÑ
  °á°ú·Î À߸øµÈ ¿À¿ª°ú Àǹ̿¡ ÀÌ»ó¾ø´Â ºÎºÐÀÌ ºüÁú ¼öµµ ÀÖÀ½À» ¹Ì¸®
  ¾Ë¸³´Ï´Ù.
  µû¶ó¼­ À߸øµÈ ¹ø¿ªÀ¸·Î ¿À´Â Ã¥ÀÓÀº Àú¿¡°Ô ¾øÀ¸¸ç, ¸¸ÀÏ ¼öÁ¤ÇØ¾ß ÇÒ
  °÷ÀÌ ÀÖ´Ù¸é Àú¿¡°Ô ¿¬¶ôÀ» ÇØÁֽñ⠹ٶó¸ç, ¿øÀúÀÇ ¿À·ù¶ó¸é ¿øÀúÀÚ¿¡°Ô
  ¿¬¶ôÇØÁֽñ⠹ٶø´Ï´Ù.)
¾î¼Àºí¸® HOWTO
        aka *Free* 32-bit x86 ¾î¼Àºí¸® FAQ
        aka Linux x86 ¾î¼Àºí¸® HOWTO
== ÇÁ¸® ÇÁ·Î±×·¡¹Ö ÅøÀ» »ç¿ëÇÏ´Â x86 ¾î¼Àºí¸® ÇÏ¿ìÅõ ==
°Ë»ö¾î :assembly, assembler, free, macroprocessor, preprocessor, asm,
        inline asm, 32-bit, x86, i386, gas, as86, nasm

Copyright (C) 1996 Francois-Rene Rideau.
  ¿©·¯ºÐµéÀº ÀÌ ¹®¼­¸¦ º¯°æÇÏÁö ¾Ê´Â ¼±¿¡¼­ ¸¶À½´ë·Î ¹èÆ÷ÇÒ ¼ö ÀÖÀ¸¸ç,
  Á¶±ÝÀÇ ÁÖ¼®Àº °¡Çصµ »ó°ü¾ø´Ù.
  ¿©·¯ºÐµéÀº ´Ù¸¥ °æ¿ì¿¡ ³ª¿¡°Ô À̹®¼­ÀÇ ¹èÆ÷¿¡ ´ëÇØ ÀÚÀ¯·Ó°Ô ¹°¾îº¼ ¼ö
  µµ ÀÖ´Ù.
  ¸®´ª½º ¹®¼­È­ °èȹÀÇ ÁøÇàÀÚµéÀº ÀÌ ¹®¼­¸¦ ÀÚÀ¯·Ó°Ô ÇÒ °ÍÀ̸ç, ´Ù¸¥ LDP
  ¹®¼­µéµµ °ð ¹Ù·Î Çã¶ôÀÌ µÉ °ÍÀÌ´Ù.
Áß¿äÇÑ Á¡:
ÀÌ ¹®¼­´Â ¾îµð±îÁö³ª º£Å¸ ¹öÁ¯ÀÌ´Ù. ¿©·¯ºÐµé¿¡°Ô´Â ´ÙÀ½°ú °°Àº Åö¼öÇÑ ±Ç¸®
°¡ ÁÖ¾îÁø´Ù.
Áú¹®Çϱâ,
Áú¹®¿¡ ´äÇϱâ,
ÁÖ¾îÁø ´äº¯À» ¹Ù·Î Á¤Á¤Çϱâ,
»õ·Î¿î FAQ ´äº¯µé¿¡ Ãß°¡Çϱâ,
´Ù¸¥ ¼ÒÇÁÆ®¿þ¾î¿¡ ¾Ï½Ã¸¦ ÁÖ±â,
ÇöÀçÀÇ °³¹ßÀÚ(³ª)¿¡°Ô ¿åÇϱâ,
±×¸®°í FAQÁøÇàÀ» ³ª´©¾î¼­ Çϱâ,
¿Ö³ÄÇÏ¸é ³ª´Â ´Ù¸¥ ÀÏÀ» Çϰí Àֱ⠶§¹®ÀÌ´Ù...
   ´Ù¸¥ °æ¿ì, ³ª¿¡°Ô ¿¬¶ôÇØ ´Þ¶ó.( ¸ÞÀÏ: <url url="mailto:rideau@ens.fr" name="rideau@ens.fr">)
¾Æ¸¶µµ ¿ì¸®´Â Raymond Moon ¿¡°Ô comp.lang.asm.x86¿¡ ÀÖ´Â °ÅÀÇ FAQ¿¡
À̺κÐÀ» º¸Å´ °ÍÀ» ³³µæ½Ãų ¼ö ÀÖÀ» °ÍÀÌ´Ù.
</abstract>

<toc>
<sect>½ÃÀÛ<p>
ÀÌ ¹®¼­´Â ¸®´ª½º ¿î¿µÃ¼Á¦¿¡¼­ ÇÁ¸® ¾î¼Àºí·¯¸¦ »ç¿ëÇÑ 32ºñÆ® x86 ¾î¼Àºí¸®
ÇÁ·Î±×·¡¹ÖÀ̳ª ÇÁ·Î±×·¥µé¿¡ ´ëÇØ Áú¹®ÇÏ´Â »ç¶÷µé¿¡°Ô ´äº¯Çϱâ À§ÇØ Á¦ÀÛ
ÀÌ µÇ¾ú´Ù.
±×°ÍÀº ¶ÇÇÑ ÇÁ¸®°¡ ¾Æ´Ñ, x86ÀÌ ¾Æ´Ñ, 32ºñÆ® ¾î¼Àºí·¯°¡ ¾Æ´Ñ ±×·¯ÇÑ °Íµé¿¡
´ëÇÑ ¹®¼­µéÀ» ¾ð±ÞÇÒ ¼ö ÀÖ´Ù.
¿Ö³ÄÇÏ¸é ¾î¼Àºí¸® ÇÁ·Î±×·¡¹Ö¿¡¼­ ÁÖ·Î Èï¹ÌÀÖ´Â ºÐ¾ß´Â ¿î¿µÃ¼Á¦, ¾ð¾î, °ÔÀÓ,
C ÄÄÆÄÀÏ·¯°¡ Ç¥ÇöÀ» Á¦´ë·Î Çϱâ Èûµç ºÎºÐµéÀ» °Ç´õ¸®´Â °ÍÀÌ´Ù.
¿ì¸®´Â ±×·¯ÇÑ ¼ÒÇÁÆ®¿þ¾î °³¹ßÀ» ¸ñÇ¥·Î Çϰí ÀÖ´Ù.
</P>

<sect1>ÀÌ ¹®¼­¸¦ Ȱ¿ëÇÏ´Â ¹æ¹ý<p>
ÀÌ ¹®¼­´Â Á¾Á¾ Áú¹®ÇÏ´Â °Íµé¿¡ ´ëÇÑ ´äº¯µéÀ» Æ÷ÇÔÇϰí ÀÖ´Ù. ¸¹Àº °æ¿ì,
¼ÒÇÁÆ®¿þ¾î³ª ¹®¼­ »çÀÌÆ®¿¡ URLÀÌ ÁÖ¾îÁø´Ù.
°¡Àå À¯¿ëÇÑ »çÀÌÆ®°¡ ¹Ì·¯ µÇ¾ú°í, °¡±îÀÌÀÇ ¹Ì·¯ »çÀÌÆ®¸¦ ÅëÇØ ÀÌ¿ëÇÒ ¼ö ÀÖ
´Ù¸é, ¿©·¯ºÐµéÀº ¾Æ±î¿î ÀÚ½ÅÀÇ ½Ã°£À» ¹ö¸®Áö ¾Ê°í, ºÒÇÊ¿äÇÑ ³ë·ÂÀ» ÁÙÀÏ ¼ö
ÀÕÀ» °ÍÀÌ´Ù.
ƯÀÌÇÑ °æ¿ì¿¡, Àαâ»çÀÌÆ®¸¦ ¹Ì·¯ÇÏ´Â ¼¼°è¿¡¼­ ¾ÆÁÖ Å« »çÀÌÆ®°¡ ÀÖ´Ù.
º¸ÅëÀº ¹Ì·¯¸®½ºÆ®µéÀÌ ÆÄÀÏ·Î Á¦°øµÉ ¼öµµ ÀÖ°í ¶Ç´Â, ·Î±ä ¸Þ¼¼Áö¿¡ ³ªÅ¸³­´Ù.
Ãæ°í¸¦ ¹Þ¾Æµé¿©¶ó.
±×¹Û¿¡, ¿©·¯ºÐµéÀº ã°íÀÚ ÇÏ´Â °ÍÀ» archie¸¦ ÀÌ¿ëÇÔÀ¸·Î½á ÇØ°áÇÒ ¼ö ÀÖÀ»
°ÍÀÌ´Ù.
°¡Àå ÃÖ±ÙÀÇ ¹®¼­¹öÁ¯ÀÌ ÀÖ´Â °÷Àº ´ÙÀ½°ú °°´Ù.

         http://www.eleves.ens.fr:8080/home/rideau/Assembly

±×·¯³ª ¸®´ª½º ÇÏ¿ìÅõ ½ÎÀÌÆ®´Â Á¤¸» ¹ø°³°°ÀÌ ¾÷µ¥ÀÌÆ® µÈ´Ù. ³ªµµ ¸ð¸£´Â
»çÀÌ¿¡..
         <url url="ftp://sunsite.unc.edu/pub/linux/docs/HOWTO/" name="sunsite.unc.edu/pub/linux/docs/HOWTO/"> (?)
</P>

<sect1>´Ù¸¥ °ü·Ã ¹®¼­<p>
* ¸¸ÀÏ ¿©·¯ºÐµéÀÌ ÇÁ¸® ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇØ Àß ¸ð¸¥´Ù¸é GNU °ø°ø ¶óÀ̼¾½º¸¦
  ÁÖÀÇ ±í°Ô ÀÐ¾î º¸±æ ¹Ù¶õ´Ù. ±×°ÍÀº ¸¹Àº ÇÁ¸® ¼ÒÇÁÆ®¿þ¾îµé°ú ´ëºÎºÐÀÇ ¸ð
  µ¨¿¡¼­ »ç¿ëµÇ¾î Áö°í ÀÖ´Ù:
  º¸Åë "COPYING"À̶ó´Â ÆÄÀÏÀ̸§À¸·Î µé¾î ÀÖÀ¸¸ç, ¶óÀ̺귯¸®¹öÁ¯À̶ó¸é
  "COPYING.LIB" ¶ó´Â À̸§À¸·Î µÇ¾î ÀÖÀ» °ÍÀÌ´Ù.
  FSF(free software foundation)ÀÇ ¹®Àå°¡µéÀº ¶ÇÇÑ ´ç½ÅÀ» µµ¿ï °ÍÀÌ´Ù.
* Ưº°ÇϰÔ, Èï¹ÌÀÖ´Â ÇÁ¸® ¼ÒÇÁÆ®¿þ¾îµéÀº ´ëºÎºÐ ¼Ò½º¸¦ Æ÷ÇÔÇϰí ÀÖ´Â µ¥,
  ¿©·¯ºÐµéÀº À̰ÍÀ» Âü°íÇϰųª, ¼öÁ¤Çϰųª, ¶§·Î´Â ±×³É ±×´ë·Î Â÷¿ëÇØ¼­
  »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿©·¯ºÐµé¿¡°Ô ÁÖ¾îÁö´Â ¶óÀ̼¾½º¸¦ ÁÖÀDZí°Ô ÀÐ°í ±×±â¿¡
  µû¸£´Â °ÍÀÌ ÁÁ´Ù.
* x86 ¾î¼Àºí¸® ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ÀϹÝÀûÀÎ Áú¹®°ú ¸î¸îÀÇ »ó¾÷ÀûÀÎ ¾î¼Àºí·¯
  (16ºñÆ® µµ½ºÈ¯°æÀÇ..)¿¡ ´ëÇÑ Áú¹®¿¡ ´ëÇÑ ´äº¯µéÀ» ´ã°í ÀÖ´Â comp.lang.
  asm.x86À» À§ÇÑ FAQ°¡ ÀÖ´Ù.
  ±×Áß¿¡¼­ ¸î°³´Â ÇÁ¸® 32ºñÆ® ¾î¼Àºí¸® ÇÁ·Î±×·¡¹Ö¿¡ Àû¿ëÀÌ µÇ´Â µ¥, ¿©·¯ºÐ
  µéÀº ÀÌ FAQ¸¦ ´ÙÀ½¿¡¼­ ÀÐÀ» ¼ö ÀÖ´Ù.
         <url url="http://www2.dgsys.com/~raymoon/faq/asmfaq.zip" name="www2.dgsys.com/~raymoon/faq/asmfaq.zip">
* FAQµé°ú docµéÀº µ¶ÀÚ ¿©·¯ºÐµéÀÇ Ç÷§Æû»óÀÇ ÇÁ·Î±×·¡¹Ö¿¡ °ü·ÃµÈ °ÍµéÀÌ
  ÀÖ´Ù. ±×¸®°í Ç÷§Æû ÀÇÁ¸ÀûÀÎ °ÍµéÀº ¾î¼Àºí·¯¿¡¼­ ÇÁ·Î±×·¡¹Ö¿¡ ¹Ù·Î Àû¿ë
  ÀÌ µÇÁö ¾Ê´Â ´Ù´Â Á¡À» ÂüÁ¶ÇÏ¿©¾ß ÇÑ´Ù.
</P>

<sect>¾î¼Àºí·¯µé
<sect1>GCC ÀζóÀÎ ¾î¼Àºí¸®<p>
Àß ¾Ë·ÁÁø ¹Ù¿Í °°ÀÌ, GNU ÇÁ·ÎÁ§Æ®¿¡¼­ Áß¿äÇÑ À§Ä¡¸¦ Â÷ÁöÇϰí ÀÖ´Â ÃÖÀûÈ­µÈ
32ºñÆ® ÄÄÆÄÀÏ·¯ÀÎ GNU C/C++ ÄÄÆÄÀÏ·¯ (GCC)´Â x86 ¾ÆÅ°ÅØÃĸ¦°­·ÂÇÏ°Ô Áö¿ø
ÇÑ´Ù. ±×¸®°í C ÇÁ·Î±×·¥¾È¿¡ ¾î¼Àºí¸® Äڵ带 »ðÀÔÇÒ ¼ö ÀÖ´Â ´É·ÂÀ» Á¦°øÇÑ´Ù.
GCC ´Â ´ëºÎºÐÀÇ °¡´ÉÇÑ Ç÷§Æû¿¡¼­ µ¿ÀÛÇÑ´Ù.
±×Áß¿¡¼­µµ Linux, *BSD, VSTa, OS/2, *DOS, Win*, µîµî..
</P>

<sect2>GCC°¡ ÀÖ´Â °÷<p>
GCC ¿øº»»çÀÌÆ®´Â
         <url url="ftp://prep.ai.mit.edu/pub/gnu/" name="prep.ai.mit.edu/pub/gnu/">
¿¡ ´Ù¸¥ GNU °èȹ¿¡ ÀÇÇÑ ¾îÇø®ÄÉÀÌ¼Ç ¼ÒÇÁÆ®¿þ¾îµé°ú °°ÀÌ ¹ßÇ¥µÈ´Ù.
±×¸®°í, ¶ÇÇÑ ¸¹Àº ¹Ì·¯ »çÀÌÆ®µéÀÌ Á¸ÀçÇϰí ÀÖ´Ù.
¿©·¯ºÐµéÀÇ °³¹æÀûÀÎ OS¿¡ ¸Âµµ·Ï °³Á¤µÈ ¼Ò½ºµé°ú ¹Ì¸® ÄÄÆÄÀÏµÈ ¹ÙÀ̳ʸ®µéÀÌ
Åë»óÀûÀÎ FTP »çÀÌÆ®¿¡ÀÖ´Ù.
inux ÀÇ GCC¸¦ »ç¿ëÇÑ´Ù¸é ¾Æ·¡¿¡ °¡º»´Ù.
         <url url="http://www.linux.org.uk/" name="www.linux.org.uk/">
°¡Àå Àαâ ÀÖ´Â µµ½º±â¹ÝÀÇ GCC´Â DJGPPÀÌ´Ù.
´ÙÀ½ »çÀÌÆ®ÀÇ µð·ºÅ丮¿¡¼­ ¹ß°ßÇÒ ¼ö ÀÖ´Ù:
        <url url="http://www.delorie.com/djgpp/" name="www.delorie.com/djgpp/">
OS/2 ±â¹ÝÀÇ µµ½º¿¡¼­ ÀÛµ¿ÇÏ´Â GCC´Â ¶ÇÇÑ EMX¶ó ºÒ¸°´Ù;
         <url url="http://www.leo.org/pub/comp/os/os2/gnu/emx+gcc/" name="www.leo.org/pub/comp/os/os2/gnu/emx+gcc/">
         <url url="http://warp.eecs.berkeley.edu/os2/software/shareware/emx.html" name="warp.eecs.berkeley.edu/os2/software/shareware/emx.html">
</P>

<sect2>GCC ÀζóÀÎ ¾î¼Àºí¸® DOCµéÀ» ±¸ÇÏ´Â °÷<p>
GCC ¹®¼­´Â texinfo Æ÷¸äÀ¸·Î ¹®¼­ÆÄÀϵéÀ» Æ÷ÇÔÇÑ´Ù. ´ç½ÅÀº ±×°ÍÀ» ÅØ½º·Î º¯
ȯÇÒ ¼ö ÀÖ°í, ÅØ½º·Î ÄÄÆÄÀÏ ÇÒ¼öµµ ÀÖÀ¸¸ç, ÇÁ¸°Æ®¸¦ ÇÏ´øÁö, À̸·½º .infoÆÄÀÏ
À̳ª ºê¶ó¿ìÀú, ±âŸ ¿©·¯ºÐµéÀÌ ÁÁ¾ÆÇÏ´Â Æ÷¸äÀ¸·Î º¯È¯ÇÒ ¼ö ÀÖ´Ù.
.info ÆÄÀÏÀº GCCÀÇ ±¦ÂúÀº ¼³Ä¡º»¿¡´Â µé¾î ÀÖ´Â °Í °°´Ù.
±× ºÎºÐÀº ´ÙÀ½°ú °°´Ù:
         C È®Àå::È®ÀåµÈ Asm::
ºÎºÐ
         GCC ºÒ·¯¿À±â::¼­ºê¸ðµ¨ ¿É¼Ç::i386 ¿É¼Ç::
ÀÌ·¯ÇÑ °ÍµéÀÌ µµ¿òÀÌ µÉ °ÍÀÌ´Ù. ¼¼¼¼ÇÏ°Ô º¸¸é, ±×°ÍÀº i386ÀÇ ·¹Áö½ºÅ͸¦ À§
ÇØ Ưº°È÷ ±ÔÁ¤µÈ À̸§À» Á¦°øÇÑ´Ù:
abcdSDB ´Â %eax, %ebx, %ecx, %edx,%esi, %edi, %ebp ¿Í Çϳª¾¿ ÀÏÄ¡ÇÑ´Ù.
(%esp¿¡´Â ±ÛÀÚ°¡ ¹è´çµÇ¾î ÀÖÁö ¾Ê´Ù.)
HTML Æ÷¸äÀ¸·Î º¯È¯µÈ ÀÌ·¯ÇÑ ¹®¼­µé°ú ºÎºÐµéÀÇ URLÀº ´ÙÀ½°ú °°´Ù.
         <url url="http://www.cygnus.com/doc/usegcc_89.html" name="www.cygnus.com/doc/usegcc_89.html">#SEC92
DJGPP °ÔÀÓ¸®¼Ò½º (°ÔÀÓ ÇØÄ¿µé¿¡°Ô »Ó¸¸ÀÌ ¾Æ´Ï¶ó)´Â Ưº°ÇÏ°Ô ¾î¼Àºí¸®¿¡ °üÇÑ
ÀÌ·¯ÇÑ ÆäÀÌÁö¸¦ °¡Áö°í ÀÖ´Ù:
         <url url="http://www.rt66.com/~brennan/djgpp/djgpp_asm.html" name="www.rt66.com/~brennan/djgpp/djgpp_asm.html">
¸¶Áö¸·À¸·Î, ÀÌ·¯ÇÑ À¥ÆäÀÌÁöµéÀº "DJGPP Quick ASM Programming Guide" ·Î
ºÒ¸®¿öÁö°í FAQµé°ú AT&T x86 ¾î¼Àºí¸® ¹®¹ý, ¸î¸îÀÇ ÀζóÀÎ ¾î¼Àºí¸® Á¤º¸,
.obj/.lib ÆÄÀϵéÀ» º¯È¯ÇÏ´Â °Íµé¿¡ ´ëÇÑ °Íµé·Î °¡µæÂ÷ ÀÖ´Ù.
        <url url="http://remus.rutgers.edu/~avly/djasm.html" name="remus.rutgers.edu/~avly/djasm.html">

GCC ´Â ¾î¼Àºí¸µ¿¡¼­´Â GAS¿¡ ÀÇÁ¸ÇÏ°í ¾Æ·¡ÀÇ ¹®¹ýÀ» µû¸¥´Ù;
ÀζóÀÎ ¾î¼Àºí¸®´Â ÀοëµÈ ÆÛ¼¾Æ® ¹®ÀÚ¸¦ ÇÊ¿ä·Î ÇÑ´Ù.
±×·¡¼­ ±×°ÍµéÀº GAS ¿¡°Ô·Î °Ç³×Áø´Ù.
¾Æ·¡ÀÇ GAS¿¡ ´ëÇÑ ºÎºÐÀ» º¸ÀÚ.
¸¹Àº À¯¿ëÇÑ ¿¹Á¦µéÀ» ¸®´ª½ºÀÇ linux/include/asm-i386/ ¼Ò½º ¼­ºêµð·ºÅ丮
¿¡¼­ ã¾Æº¸ÀÚ.
</P>

<sect2>¾î¶»°Ô GCC ¾È¿¡¼­ Á¤È®È÷ ¾î¼Àºí¸® Äڵ带 ºÒ·¯³»´Â°¡?<p>
ÃÖÀûÈ­¿Í ÀζóÀÎ ¾î¼Àºí¸®¸¦ °¡´ÉÇÏ°Ô Çϱâ À§Çؼ­ GCC ¸¦ "-O" Ç÷¡±×¿Í °°ÀÌ
ºÒ·¯³»ÀÚ.
±×·¸°Ô ÇÏÁö ¾Ê´Â ´Ù¸é, ÄÚµå´Â ÄÄÆÄÀϵDZâ´Â Çϳª, Á¤È®È÷ µ¿ÀÛÇÏÁö ¾ÊÀ» °Í
ÀÌ´Ù.
Á» ´õ ÀϹÝÀûÀ¸·Î, x86 Ç÷§Æû¿¡¼­ ÁÁÀº ÄÄÆÄÀÏ Ç÷¡±×´Â
<verb>
         gcc -O2 -fomit-frame-pointer -m386
</verb>
Á¤µµ°¡ µÉ °ÍÀÌ´Ù.
-O2 ´Â ÁÁÀº ÃÖÀûÈ­ ·¹º§ÀÌ´Ù. ÃÖÀûÈ­¿¡ ´õÇÏ¿© ÄÄÆÄÀÏ·¯´Â Äڵ带 Å©°Ô ¸¸µç´Ù.
    ±×·¯³ª ±×°ÍÀº ´ÜÁö bit fasterÀÏ »ÓÀÌ´Ù;
    ±×·¯ÇÑ °ú´ÙÇÑ ÃÖÀûÈ­´Â ·çÇÁ¸¦ ŸÀÌÆ®ÇÏ°Ô ¸¸µå´Â µ¥ Á¤µµ¿¡¸¸ À¯¿ëÇÒ ¼ö
    ÀÖ´Ù. ¿©·¯ºÐµéÀÌ ¾î¶»°Ôµç ¾î¼Àºí¸®¿¡¼­ »ç¿ëÇÑ´Ù¸é ¸»ÀÌ´Ù.
    ±×°ÍÀÌ ÇÊ¿äÇÏ´Ù¸é ÇÊ¿äÇÑ ¸¸Å­¸¸ÀÇ ·çƾµé¿¡ »ç¿ëÇ϶ó.
-fomit-frame-pointer ´Â stupid frame pointer maintenance¸¦ °Ç³Ê¶Ù°Ô Äڵ带
   »ý¼º½Ã۰í, Äڵ带 Á»´õ ÀÛ°í ºü¸£°Ô ¸¸µé¸ç, ±× ÀÌ»óÀÇ ÃÖÀûÈ­¸¦ À§Çؼ­
   ·¹Áö½ºÅ͸¦ ÀÚÀ¯·Ó°Ô ÇÑ´Ù.
   À̰ÍÀº µð¹ö±ë Åø(gdb)µéÀ» »ç¿ëÇÏ±â ¾î·Æ°Ô ¸¸µé±ä Çϳª, ´õÀÌ»ó »çÀÌÁî¿Í ¼Óµµ
   ¸¦ Çâ»ó ½Ãų ¼ö ¾øÀ» °ÍÀÌ´Ù.
-m386 Àº ¾î¶°ÇÑ ¼ÓµµÀÇ ÀúÇϾøÀÌ Á» ´õ ÄÞÆÑÆ®ÇÑ Äڵ带 »ý¼ºÇØ ³½´Ù.
   ( ÀÛÀº ÄÚµå´Â ¶ÇÇÑ µð½ºÅ© ÀÔÃâ·ÂÀ» Àû°Ô ¼öÇàÇÏ°í ºü¸¥ ½ÇÇàÀ» ÇÑ´Ù´Â °ÍÀ»
     ±â¾ïÇÏÀÚ.)
   ±×·¯³ª ¾Æ¸¶µµ À§¿¡ ¾ð±ÞÇÑ Å¸ÀÌÆ®ÇÑ ·çÇÁ»ó¿¡¼­ ÀÏ °ÍÀÌ´Ù.
Á»´õ ÃÖÀûÈ­ ÇÏ·Á¸é, -mregparm=2 ¿É¼ÇÀ̳ª ÀÌ¿¡ ´ëÀÀÇÏ´Â ÇÔ¼ö°¡ µµ¿òÀÌ µÉ
°ÍÀÌ´Ù. ±×·¯³ª ¿ÜºÎ ÄÚµå¿Í ¸µÅ·À» ÇÒ¶§¿¡´Â ¸¹Àº ¹®Á¦Á¡µéÀÌ ¿©·¯ºÐµéÀ»
±«·ÓÈ÷°Ô µÉ °ÍÀÌ´Ù.
¿©·¯ºÐµéÀº ÀÌ·¯ÇÑ Ç÷¡±×µéÀ» ±âº»¼³Á¤ÆÄÀÏÀÎ
<verb>
         /usr/lib/gcc-lib/i486-linux/2.7.2/specs
</verb>
¿¡ Ãß°¡ÇÒ ¼ö ÀÖ´Ù. (ÀÌ ÆÄÀÏÀº ½Ã½ºÅÛ¿¡ µû¶ó Á¶±Ý Ʋ¸± ¼ö ÀÖ´Ù.)
</P>

<sect1>GAS<p>
GAS´Â GCC¿Í ÇѽÖÀ¸·Î ¿òÁ÷ÀÌ´Â GNU ¾î¼Àºí·¯ÀÌ´Ù.
</P>

<sect2>¾îµð¼­ ãÀ» ¼ö Àִ°¡<p>
binutils¶ó À̸§ºÙ¿©Áø ÆÐŰÁö ¼Ó¿¡ GCC°¡ ÀÖ´Â °°Àº °÷¿¡¼­ ãÀ» ¼ö ÀÖ´Ù.
</P>

<sect2>AT&T ¹®¹ýÀº ¹«¾ùÀ» ¸»Çϴ°¡<p>
GAS´Â 32ºñÆ® À¯´Ð½º ÄÄÆÄÀÏ·¯¸¦ Á¦°øÇϱâ À§ÇØ Ã¢¾ÈµÇ¾ú±â ¶§¹®¿¡ Ç¥ÁØ AT&T
¹®¹ýÀ» ÀÌ¿ëÇÑ´Ù.
AT&T ¹®¹ýÀº ¸¹Àº °ÍµéÀÌ Ç¥ÁØ 680x0 ¾î¼Àºí·¯¿Í ´à¾Ò´Ù.
ÀÌ ¹®¹ýÀº "Intel" ¹®¹ý¿¡ ºñÇØ¼­ ÁÁÁöµµ ¾Ê°í, ³ª»ÚÁöµµ ¾Ê´Ù.
´ÜÁö ´Ù¸¦ »ÓÀÌ´Ù.
¿©·¯ºÐµéÀÌ ±×°ÍÀ» »ç¿ëÇØº¸°Ô µÇ¸é, ÀÎÅÚ ¹®¹ý¿¡ ºñÇØ Á»´õ ¸¹Àº ±ÔÄ¢ÀÌ ÀÖÀ½
À» ¾Ë°Ô µÉ °ÍÀÌ´Ù.
¿©·¯ºÐµéÀÌ ÇÁ·Î±×·¥À» º¯È¯ÇÏ´Â °ÍÀ» µ½±â À§ÇÑ ÇÁ·Î±×·¥ÀÌ Á¸ÀçÇÑ´Ù.
À̰ÍÀº TASM ¹®¹ýÀ» AT&T ¹®¹ýÀ¸·Î º¯È¯ÇÏ´Â °ÍÀÌ´Ù.
         <url url="ftp://ftp.oulu.fi/pub/msdos/programming/convert/ta2asv08.zipgas.doc" name="ftp.oulu.fi/pub/msdos/programming/convert/ta2asv08.zipgas.doc">
À̳ª as.docÆÄÀÏ(GAS¸¦ ãÀº °°Àº °÷ ÁÖÀ§¿¡ ÀÖÀ» °ÍÀÌ´Ù)Àº ±× ¹®¹ýÀ»
±â¼úÇÑ´Ù.
´ÙÀ½ÀÇ FTP µð·ºÅ丮¿¡ ÀÖ´Ù
      <url url="ftp://sunsite.unc.edu/pub/linux/GCC/" name="sunsite.unc.edu/pub/linux/GCC/">
      <url url="ftp://sunsite.doc.ic.ac.uk/packages/linux/sunsite.unc-mirror/GCC/" name="sunsite.doc.ic.ac.uk/packages/linux/sunsite.unc-mirror/GCC/"> (?)
´Ù½ÃÇѹø À̾߱âÇÏÁö¸¸, ¸®´ª½º¿¡´Â ±¦ÂúÀº ¿¹µéÀÌ µé¾îÀÖ´Ù;
¾Æ·¡ÀÇ linux/arch/i386ÀÇ ´ÙÀ½ ÆÄÀϵéÀ» º¸¶ó:
kernel/entry.S, kernel/head.S, boot/compressed/head.S, mathemu/*.S
</P>

<sect2>2.2.3 Á¦ÇÑµÈ 16ºñÆ® ¸ðµå<p>
GAS ´Â 32ºñÆ® ¾î¼Àºí·¯À̸ç 32ºñÆ® ÄÄÆÄÀÏ·¯¸¦ Á¦°øÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.
GAS ´Â ÇöÀç Á¦ÇÑµÈ 16 ºñÆ®¸ðµå¸¦ Á¦°øÇϴµ¥, ±× 16ºñÆ®¸ðµå´Â ¹Ì¸® ¿¹ºñµÈ,
¸í·É¾îµéÀÇ 32ºñÆ® Á¢µÎ¾î·Î ÀÌ·ç¾îÁ® ÀÖÀ¸¸ç, µû¶ó¼­ 32ºñÆ® CPU»óÀÇ 16ºñÆ®
¸ðµå¿¡¼­ µ¹¾Æ°¡´Â 32ºñÆ® ¸ðµå¸¦ ¾µ ¼ö ÀÖ´Ù.
¾ç¸ðµå¿¡¼­ °øÈ÷, ±×°ÍÀº 16ºñÆ® ·¹Áö½ºÅÍ »ç¿ëÀÌ °¡´ÉÇϳª, 16ºñÆ® ¾îµå·¹½Ì
Àº Á¦°øÇÏÁö ¾Ê´Â´Ù.
¸ðµå»çÀ̸¦ ÀüȯÇÏ·Á¸é "code16"°ú "code32"ÀÇ Áö½ÃÀÚ¸¦ »ç¿ëÇ϶ó.
ÀζóÀÎ ¾î¼Àºí¸®¿¡¼­ÀÇ asm("code16\n") »óÅ´ 32ºñÆ® GCC·Î ÇÏ¿©±Ý ¸®¾ó¸ðµå!
¿¡¼­ µ¹¾Æ°¡´Â Äڵ带 ¸¸µé°ÍÀ» Çã¿ëÇÑ´Ù.
¿©·¯ºÐµéÀÌ ÇÊ¿äÇÏ´Ù°í ´À³¤´Ù¸é Ç® 16ºñÆ®¸¦ »ç¿ëÇÔÀ¸·Î½á ¸¶À½²¯ ´©·Áº¸ÀÚ.
</P>

<sect1>2.3 GASP<p>
GASP ´Â GASÀÇ Àü󸮱âÀÌ´Ù.
À̰ÍÀº GAS¿¡ ¸ÅÅ©·Î¿Í ¸î¸î ±¦ÂúÀº ¹®¹ýÀ» Ãß°¡½ÃŲ´Ù.
</P>

<sect2>2.3.1 GASP¸¦ ¾îµð¼­ ãÀ» °ÍÀΰ¡<p>
³ª´Â Á¤È®ÇÏ°Ô ¸ð¸¥´Ù. GNU »çÀÌÆ® (prep.ai.mit.edu & mirrors)¸¦ º¸±â¹Ù¶õ´Ù.
¾Æ¸¶µµ GAS¿Í °°ÀÌ binutils ÆÐŰÁö¿¡ °°ÀÌ ÀÖÀ» °ÍÀÌ´Ù.
</P>

<sect2>2.3.2 GASP´Â ¾î¶°ÇÑ ÀÏÀ» Çϴ°¡
<p>
³­ ¾Æ¹« »ý°¢ÀÌ ¾ø´Ù, ±×·¯³ª ±×°ÍÀº ÀÚüÀÇ texinfo ¹®¼­°¡ µû¶ó¿Ã °ÍÀÌ´Ù.
±×·¡¼­ ±×°ÍÀ» ÇÁ¸°Æ® ÇØ¼­ º¸¶ó, ¾Æ´Ï¸é .info ÆÄÀϵéÀ» ºê¶ó¿ìÁîÇϱ⠹ٶõ´Ù.
¸ÅÅ©·Î ¾î¼Àºí·¯ÀÇ ±ÔÄ¢À» ³ª¿¡°Ô º¸³»ÁÖ¸é ÁÁ°Ú´Ù.
</P>

<sect1>2.4 AS86<p>
AS86Àº Bruce Evans' C ÄÄÆÄÀÏ·¯ ºÎºÐÁßÀÇ 16ºñÆ®, 32ºñÆ®¸¦ ´Ù °°ÀÌ Á¦°øÇÏ´Â
80x86 ¾î¼Àºí·¯ÀÌ´Ù.
±×°ÍÀº ÃÖ±ÙÀÇ ÀÎÅÚ ¹®¹ýÀ» °¡Áö°í ÀÖÀ¸¸ç as¿Í Á¶±Ý ¾îµå·¹½Ì ¸ðµå¸¦ ´Þ¸®ÇÑ´Ù.
</P>

<sect2>2.4.1 AS86À» ¾îµð¼­ ¾òÀ» ¼ö Àִ°¡<p>
¿ÏÀüÈ÷ ½Ã´ë¿¡ µÚ¶³¾îÁø AS86Àº HJLu¿¡ ÀÇÇØ ¹èÆ÷µÇ¸ç ¹Ù·Î ¸®´ª½º Ä¿³ÎÀ» ÄÄ
ÆÄÀÏ ÇÒ ¼ö ÀÖ´Ù. ÀÌ ÆÐŰÁö´Â bin86(ÇöÀç¹öÁ¯ 0.3)·Î µÇ¾î ÀÖÀ¸¸ç Linux GCC
»çÀÌÆ®¿¡¼­ ¹ß°ßÇÒ ¼ö ÀÖ´Ù.
±×·¯³ª ³»°¡ º¸±â¿¡´Â ¸®´ª½º ÄÄÆÄÀϸµÀ» Á¦¿ÜÇϰí´Â ¾Æ¹«°÷¿¡µµ »ç¿ëµÇÁö ¾Ê°í
ÀÖ´Ù.
ÀÌ ¹öÁ¯Àº ¿À·ÎÁö ÇØÅ·µÈ ¹Ì´Ð½º ¿ÀºêÁ§Æ® ÆÄÀÏ Æ÷¸äÀ» Á¦°øÇϸç 32ºñÆ®¸ðµå¿¡¼­
´Â Á¶±ÝÀÇ ¹ö±×°¡ Àִµ¥, ´ÜÁö ¸®´ª½º¸¦ ÄÄÆÄÀϸ¸ Çϱâ À§Çؼ­¶ó¸é ±¦ÂúÀ¸¸®¶ó.
°¡Àå ÃÖ±ÙÀÇ ¹öÁ¯Àº FreeBSD ¹èÆ÷ÆÇ°ú °°ÀÌ Ãâ½ÃµÇ¾ú´Ù.
³ª´Â ±×°ÍÀ» ´ÙÀ½¿¡¼­ ±¸Çß´Ù.
<url url="ftp://ftp.ibp.fr/pub/FreeBSD/packages-2.1/development/bcc-95.3.12.tgz" name="ftp.ibp.fr/pub/FreeBSD/packages-2.1/development/bcc-95.3.12.tgz">
±×·¯³ª ±× ¹öÁ¯ÀÌ ÀÌÁ¦ ¸¹ÀÌ ¹ßÀüÇßÀ» °ÍÀÌ´Ù.
¿©·¯°³µé Áß¿¡¼­ AS86µµ ÀÌÁ¦ ¸®´ª½º GNU a.out Æ÷¸ËÀ» Áö¿øÇÑ´Ù. ±×·¡¼­ ¿©·¯ºÐ
µéµµ Äڵ带 ¸®´ª½º ÇÁ·Î±×·¥¿¡ ¸µÅ©¸¦ ½Ãų ¼ö ÀÖ°í, µ¥ÀÌŸ¸¦ ´Ù·ç±â À§ÇØ
GNU binutil ÆÐŰÁöÀÇ º¸ÅëÀÇ ÅøÀ» »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
ÀÌ ¹öÁ¯Àº ÀÌÀüÀÇ °Íµé°ú ÇÔ²² ¾Æ¹«·± ¼Õ»ó¾øÀÌ °øµ¿À¸·Î Á¸ÀçÇÒ ¼ö ÀÖ´Ù.
(¾Æ·¡ÀÇ Áú¹® 2.4.4¸¦ º¸¶ó).
BCC ÀÇ 1995.3.12 ÀÌÀüÀÇ ¹öÁ¯µéÀÌ ½Ç¼öÇÑ ÀÌÀ¯´Â 32ºñÆ® ¸ðµå ÇÁ·Î±×·¡¹Ö ½Ã¿¡
¸ðµç ¼¼±×¸ÕÆ® ÆË°ú Ǫ½¬¸¦ 16ºñÆ®·Î ó¸®ÇÔÀ¸·Î½á ¸Å¿ì ¹ø°Å·Ó°Ô µÈ µ¥ ÀÖ¾ú´Ù.
±× ÆÐÄ¡°¡ Tunes ÇÁ·ÎÁ§Æ®¿¡ ÀÇÇØ ´ÙÀ½¿¡ ¹ßÇ¥µÇ¾ú´Ù.
        <url url="http://www.eleves.ens.fr:8080/home/rideau/Tunes/" name="www.eleves.ens.fr:8080/home/rideau/Tunes/">
º¸Á¶ÆäÀÌÁö´Â
         files/tunes.0.0.0.25.src.tgz
ÀÌ´Ù.
Ç®¸° ¼­ºêµð·ºÅ丮ÀÇ
         LLL/i386/
±× ÆÐÄ¡´Â ¶ÇÇÑ ¹Ù·Î ´ÙÀ½¿¡¼­ ãÀ» ¼ö ÀÖ´Ù.
        <url url="http://www.eleves.ens.fr:8080/home/rideau/files/as86.bcc.patch.gz" name="www.eleves.ens.fr:8080/home/rideau/files/as86.bcc.patch.gz">
Bruce Evans ´Â ÀÌ ÆÐÄ¡¸¦ ¹Þ¾Æµé¿´´Âµ¥, °¡Àå ÃÖ±ÙÀÇ bcc ¹öÁ¯Àº ÀÌ ÆÐÄ¡
¸¦ Æ÷ÇÔÇϰí ÀÖ´Ù.
µµ½º »ç¿ëÀÚ¸¦ À§ÇÑ ÁÖÀÇ»çÇ×:
<itemize>
<item>µµ½º¿¡¼­ ÄÄÆÄÀÏ ÇÏ·Á¸é POSIX_HEADERS_MISSING ¸¦ ¸ÕÀú Á¤ÀÇÇ϶ó.
<item>bcc/as¿¡ À־ DJGPP¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é mops.cÀÇ mcall() ÇÔ¼ö¿¡¼­
  "far"¶ó°í À̸§ ºÙ¿©Áø °ÍÀ» °ªÀ» ¹Ù²ã¾ß ÇÑ´Ù.
  ¿Ö³ÄÇÏ¸é ¸î¸î µµ½º ÄÄÆÄÀÏ·¯¿¡¼­´Â "far"´Â ¿¹¾à¾îÀ̱⠶§¹®ÀÌ´Ù.
  bcc/ld µð·ºÅ丮·ÎºÎÅÍ typeconf.obj·Î ¸µÅ©¸¦ ½ÃÄÑ¾ß ÇÑ´Ù´Â °ÍÀ» ÁÖÀÇÇ϶ó.
<item>bcc/ld¿¡ À־ ¾Æ¸¶µµ a.out.h¿Í ar.hÀÇ º¹»çº»ÀÌ ÇÊ¿äÇÒ °ÍÀÌ´Ù.
  DJGPP´Â ±×°ÍÀ» °¡Áö°í Àִµ¥, ´Ù¸¥ C ÄÄÆÄÀÏ·¯ ÀÏ °æ¿ì¿¡´Â ´Ù¸¥ GCC(µµ½º,
  ¸®´ª½º, VSTa, µîµî)¿¡¼­ ¸ô·¡ »ì¦ ÇØ¾ß ÇÒ °ÍÀÌ´Ù. ( ^.% )
<item>bcc/ld¿¡ À־ BSD_A_OUT ¸ÅÅ©·ÎÁ¤ÀǸ¦ ¸ðµç ÆÄÀÏ¿¡¼­ ÇØ¾ß ÇÒ Çʿ䰡 ÀÖÀ»
  °ÍÀÌ´Ù. ±×¸®°í STADARD_GNU_A_OUT Á¤ÀǸ¦ writebin.c¿¡ ÇØµÎ°í ¸®´ª½º
  a.out.h º¹»çº»À» »ç¿ë°¡´ÉÇÑ µµ½º À̸§À¸·Î º¯°æÇÑ´Ù.
<item>turnsÀÇ ¸®´ª½º a.outÀº asm/a.out.h¿¡ Æ÷ÇÔÀÌ µÇ¾î Àִµ¥, À̰͵µ Æ÷ÇÔÀÌ µÇ
  µµ·Ï ÇØ¾ß ÇÑ´Ù. 16ºñÆ® ¾î¼Àºí·¯¿¡¼­´Â asm/a.out.h¸¦  24ºñÆ® º¸´Ù ÀûÀº ºñÆ®
  Çʵå·Î ¼¼Æ®µÈ °Í¿¡ ´ëÀÀÇÏ´Â 24ºñÆ® ºñÆ®Çʵ带 º¯°æÇÏ¿©¾ß ÇÑ´Ù.
<item>³ª´Âcc1À» ½ÃµµÇØ º¸Áö ¾Ê¾Ò´Âµ¥, ±×·¯³ª ½ÇÁ¦·Î ¿©·¯ºÐµéÀÌ ÇØº¸°í ½Í´Ù¸é
  cc1À» ÄÄÆÄÀÏ ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×·¯³ª, ¾Æ¸¶µµ bcc frontend¸¦ ´Ù½Ã Àû¾î¾ß
  Çϰųª ¹Ù·Î cc1À» »ç¿ëÇØ¾ß ÇÒ°ÍÀÌ´Ù.¿Ö³ÄÇÏ¸é ±×°ÍÀº ÄÄÆÄÀÏ ½Ã cc1, as,
  ld¸¦ ÀÛµ¿½Ãų ¶§ fork()/exec()/wait() Æ®·¹ºí¿¡ ÀÇÁ¸Çϱ⠶§¹®ÀÌ´Ù.
<item>Àüó¸®µÈ µµ½º¹öÁ¯Àº ´ÙÀ½¿¡¼­ ¹ß°ßÇÒ ¼ö ÀÖ´Ù.
        <url url="http://www.eleves.ens.fr:8080/home/rideau/files/asld86.zip" name="www.eleves.ens.fr:8080/home/rideau/files/asld86.zip">
  ¸¸ÀÏ ±×°ÍµéÀ» ÇÁ¸® ÄÄÆÄÀÏ·¯·Î Á¦ÄÄÆÄÀÏÀ» ÇÏ°Ô µÈ´Ù¸é ³ª¿¡°Ô º¸³»´Þ¶ó.
  ±×·¯¸é ¸Å¿ì °í¸¶¿ï °ÍÀÌ´Ù.
</itemize>
</P>

<sect2>docµéÀ» ¾îµð¼­ ãÀ» ¼ö Àִ°¡<p>
docµéÀº bcc ÆÐŰÁö¿¡ Æ÷ÇÔÀÌ µÇ¾î ÀÖ´Ù. ¸ÇÆäÀÌÁöµµ ¶ÇÇÑ FreeBSD »çÀÌÆ®ÀÇ ¾î
´À °÷ÀÌ´øÁö ±¸ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
ÀǽÉÀÌ °£´Ù¸é, ±×µé ¼Ò½º¿¡ °¡²û ±¦ÂúÀº docµéÀÌ ÀÖ´Ù:
±×¸® Àß ¼³¸íÀÌ µÈ °ÍÀº ¾Æ´ÏÁö¸¸, ÇÁ·Î±×·¡¹Ö ½ºÅ¸ÀÏÀº ±ú²ýÇÏ°Ô µÇ¾î ÀÖ´Ù.
°ü½ÉÀÌ ÀÖ´Ù¸é Tunes 0.0.0.25 ¿¡¼­ ¾î¶»°Ô as86ÀÌ »ç¿ëµÇ¾ú´Â Áö¸¦ »ìÆìº¸¶ó.
</P>

<sect2>¾î¶»°Ô ¾î¼Àºí·¯¸¦ ºÒ·¯¿À´Â°¡ ?<p>
bcc¸¦ »ç¿ëÇØ¼­ .s ¾î¼Àºí¸® ¼Ò½º ÆÄÀÏÀ» GNU a.out .o ¿ÀºêÁ§Æ® ÆÄÀÏ, .l ¸®½ºÆÃ
ÆÄÀÏ·Î º¯È¯ÇÏ´Â GNU ¸ÞÀÌÅ© ÆÄÀÏÀÇ ¿¹¸¦ Çϳª µé¾îº¸ÀÚ.
<verb>
%.o %.l:       %.s
         bcc -3 -G -c -A-d -A-l -A$*.l -o $*.o $<
</verb>
¾î¶°ÇÑ ¸®½ºÆÃ ÆÄÀϵµ ¹ºÇÏÁö ¾Ê´Â´Ù¸é "%.l", "-A-l", "-A$*.l"À» ¾ø¾Ö¶ó.
GNU a.out ÀÌ¿ÜÀÇ °ÍÀ» ¾ò°íÀÚ ÇÑ´Ù¸é bcc docÁß¿¡¼­ ´Ù¸¥ Á¦°øÇÏ´Â Æ÷¸Ë¿¡ ´ëÇÑ
±ÛÀ» º¸°Å³ª GNU binutils ÆÐŰÁöÀÇ objcopy À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
</P>

<sect2>ÀÌ »õ·Î¿î ¹öÁ¯À¸·Î ¸®´ª½º¸¦ ÄÄÆÄÀÏ ÇÒ¼ö ¾ø´Ù¸é ¾î¶»°Ô ÇØ¾ß Çϴ°¡?<p>
¸®´©½º´Â ¸ÞÀÏ·Î ¿Õ¼ºÇÏ°Ô È°µ¿Çϰí ÀÖ´Ù. ¸®´ª½º a.out as86À¸·Î ¸®´ª½º¸¦ ÄÄ
ÆÄÀÏÇÏ´Â ³ªÀÇ ÆÐÄ¡µµ ±×°ÍÀ» ¸¸µéÁö ¸øÇÑ´Ù.
ÀÌÁ¦, À̰͵éÀÌ ¼º°øÇÏÁö ¸øÇÑ´Ù¸é: bin86 ÆäŰÁö¾ÈÀÇ /usr/bin¿¡ ÀÖ´Â ¿©·¯ºÐµéÀÇ
as86 À» °¡Áö°í ÀÖ°í, ´õ ÁÁÀº as86À» /usr/local/libexec/i386/bcc/as¿¡ °¡Á®´Ù
³õ¾Æ¶ó. ¾Æ¸¶µµ ÀÌ "ÁÁÀº" as86À» ºÎ¸¦ Çʿ䰡 ´õÀÌ»ó ¾øÀ» °ÍÀÌ´Ù.
</P>

<sect1>´Ù¸¥ ¾î¼Àºí·¯µé
<p>
</P>

<sect2>Win32Forth ¾î¼Àºí·¯<p>
Win32Forth ´Â Win32s, Win95, Win/NT¿¡¼­ ÈǸ¢ÇÏ°Ô µ¹¾Æ°¡´Â ÇÁ¸® 32ºñÆ® FORTH
½Ã½ºÅÛÀÌ´Ù.
±×°ÍÀº ¾î¼Àºí·¯¿¡ ÅëÇÕµÈ ÇÁ¸® 32ºñÆ® ¾î¼Àºí·¯(Á¢µÎ»ç ¶Ç´Â Á¢¹Ì»ç ¹®¹ý)¸¦ Æ÷
ÇÔÇϰí ÀÖ´Ù.
¸ÅÅ©·Î 󸮴 »ç·Á±íÀº FORTH ¾ð¾îÀÇ full power¿¡ ÀÇÇØ 󸮵ȴÙ.
±×·¯³ª ´ÜÁö ÀÔÃâ·ÂÀº Win32For ±×°Í ÀÚü¸¦ ÀÌ¿ëÇÒ »ÓÀÌ´Ù.
´ÙÀ½¿¡¼­ ãÀ» ¼ö ÀÖ´Ù.
      <url url="ftp://ftp.forth.org/pub/Forth/win32for/" name="ftp.forth.org/pub/Forth/win32for/">
</P>

<sect2>NASM<p>
³×Æ®¿öÅ© »ó¿¡¼­ ¹ú¾îÁö°í ÀÖ´Â ¾î¼Àºí·¯ ÇÁ·ÎÁ§Æ®´Â ¾ÆÁ÷ ´Ù¸¥ ¾î¼Àºí·¯¸¦
¸¸µé±â À§ÇØ ³ë·ÂÇϰí ÀÖ´Â ÁßÀÌ´Ù. À̰ÍÀº C¿¡¼­ ¾²¿©Á³´Âµ¥, ¸ðµç ¾Ë·ÁÁø
¹®¹ýµé°ú ¿ÀºêÁ§Æ® Æ÷¸ËµéÀ» Á¦°øÇÏ´Â µ¥ ÃæºÐÇÑ ¸ðµâ·¯°¡ µÉ°ÍÀÌ´Ù.
ÇöÀç ¹öÁ¯Àº Á¶±ÝÀÇ ¸Å¿ì °£´ÜÇÑ ¹®¹ýµé°ú ÆòÀÌÇÑ ¹ÙÀ̳ʸ® Ãâ·Â¿¡ À־´Â
Àßµ¹¾Æ°£´Ù;
¸ÅÅ©·Î ÇÁ·Î¼¼½Ì¿¡´Â Èï¹Ì°¡ ¾ø¾îº¸ÀδÙ.
È®½ÇÈ÷ NASMÀº ÀÌ ÇÏ¿ìÅõ°¡ ¾÷µ¥ÀÌÆ® µÇ´Â °Í º¸´Ù ºü¸£°Ô ¹ßÀüÇϰí ÀÖ´Ù;
±×·¸´Ù°í NASMÀÌ ÇöÀç ¿ä±¸µÇ´Â ¸ðµç Ư¡µéÀ» °¡Áö°í ÀÖÀ» °ÍÀ̶ó°í ±â´ëÇÏ
Áö´Â ¸»¶ó. Àû¾îµµ ¿©·¯ºÐµéÀÌ ±×°ÍÀÇ °èȹÀÌÇàÀ» µµ¿ï Áغñ¾øÀÌ´Â...
         <url url="http://www.dcs.warwick.ac.uk/~jules/nasm1.html" name="www.dcs.warwick.ac.uk/~jules/nasm1.html">
</P>

<sect2>Tunes<p>
Tunes OS ÇÁ·ÎÁ§Æ®´Â ±×µé ÀÚ½ÅÀÇ ¾î¼Àºí·¯¸¦ Scheme ¾ð¾î¸¦ »ç¿ëÇÔÀ¸·Î½á
Àüü °³¹ß ¼öÇàÀÇ ÀϺκÐÀ¸·Î °³¹ßÇϰí ÀÖ´Ù.
±×°ÍÀº ¾ÆÁ÷ Àß µ¹¾Æ°¡Áö ¾Ê°í ÀÖÀ¸¸ç µµ¿òÀ» ÇÊ¿ä·Î Çϰí ÀÖ´Ù.
ÀÌ ¾î¼Àºí·¯´Â ½Éº¼¸¯ ¹®¹ý Æ®¸®¸¦ ó¸®ÇÏ´Â µ¥, À̰ÍÀº ¾î¼Àºí¸® ¹®¹ýÀÇ ±âÃÊ·Î
µ¿µîÇÏ°Ô ¼­ºñ½º µÉ ¼ö ÀÖÀ¸¸ç, µð½º¾î¼Àºí·¯, °øÅë ¾î¼Àºí·¯/ÄÄÆÄÀÏ·¯ back-end
µîµîÀÇ, ±×¸®°í ÀüÁ¤ÇÑ ¾ð¾îÀÎ SchemeÀÇ Ç®ÆÄ¿ö´Â ¸ÅÅ©·Îó¸®/¸ÞÆ®·Î󸮿¡ À־
ŸÀÇ ÃßÁ¾À» ºÒÇãÇÑ´Ù.
         <url url="http://www.eleves.ens.fr:8080/home/rideau/Tunes/" name="www.eleves.ens.fr:8080/home/rideau/Tunes/">
</P>

<sect2>ÇÁ¸®°¡ ¾Æ´Ï°Å³ª 32ºñÆ®°¡ ¾Æ´Ñ x86 ¾î¼Àºí·¯µé<p>
¿©·¯ºÐµéÀº x86 ¾î¼Àºí¸® ÇÁ·Î±×·¡¹ÖÀÇ ±âº»À¸·Î¼­ ±×°Íµé¿¡ ´ëÇØ Á»´õ ã¾Æ
º¼ ¼ö ÀÖ´Ù. Raymond MoonÀÇ comp.lang.asm.x86À» À§ÇÑ FAQ ¸¦ ã¾Æº¸±â ¹Ù¶õ
´Ù.
         <url url="http://www2.dgsys.com/~raymoon/faq/asmfaq.zip" name="www2.dgsys.com/~raymoon/faq/asmfaq.zip">
</P>

<sect>META ÇÁ·Î±×·¡¹Ö/ ¸ÅÅ©·Î ó¸®<p>
¿©·¯ºÐµéÀº ÀÌ·¯ÇÑ ÀÛ¾÷À» À§Çؼ­ Àû´çÇÑ ÅøÀ» »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, ±×°ÍÀÌ Àû´çÇÏÁö
¾Ê´Ù¸é ¾î¼Àºí¸®¸¦ ¼±ÅÃÇÒ ¼ö ¾ø´Ù;
C, OCAML, perl, Scheme °¡ ´ç½ÅÀÇ ÇÁ·Î±×·¡¹ÖÀÇ ÃÖ¼±ÀÇ ¼±ÅÃÀÌ µÉ °ÍÀÌ´Ù.
±×·¯³ª, ÀÌ·¯ÇÑ ÅøµéÀÌ ±â°è»ó¿¡¼­ ÃæºÐÈ÷ ¾µ¸¸ÇÑ Á¦¾î±â´ÉÀ» ÁÖÁö ¾Ê´Â´Ù¸é,
¾î¼Àºí¸®´Â À¯¿ëÇϰųª ÇÊ¿äÇÒ °ÍÀÌ´Ù.
´Ù¸¥ °æ¿ì¿¡, ¸¸ÀÏ ¿©·¯ºÐµéÀÌ ¾ÈÀüÇÑ ÇÁ·Î±×·¡¹Ö, Æí¾ÈÇÑ ¼öÁ¤ µîµîÀ» Çã¶ôÇÏ´Â
ÀζóÀÎ È®Àå¿¡ ÀÇÇØ ÀÚµ¿ÀûÀ¸·Î ½Ã½ºÅÛÀÇ ¸ÅÅ©·Îó¸®¿Í ¸ÞŸÇÁ·Î±×·¡¹ÖÀ» ÀÌÇØÇÏ
°íÀÚ ÇÑ´Ù¸é ±×°ÍÀº Çѹø Á¤ÀǵǴ Àç±ÍÆÐÅÏÀ» Çã¶ôÇÒ °ÍÀ̸ç, ´ÙÁß ½Ã°£À» Àç»ç¿ë
ÇÒ °ÍÀÌ´Ù.
"ÆòÀÌÇÑ" ¾î¼Àºí·¯´Â Á¾Á¾ ÀÛÀº ·çƾÀ» C·Î ¸µÅ©½Ãų ¶§ Á¶Â÷ ÃæºÐÈ÷ ¾ÊÀº¶§°¡
ÀÖ´Ù.
</P>

<sect1>À§¿¡¼­ ÅëÇÕµÈ °ÍÀ̶õ ¹«¾ùÀ» ¶æÇϴ°¡
<sect2>GCC<p>
GCC ¿¡¼­ ÀζóÀÎ ¾î¼Àºí¸® Äڵ带 »ç¿ëÇÑ´Ù¸é ±× ¼Ó¿¡¼­ÀÇ ·¹Áö½ºÅÍ ±ÔÄ¢À» ²Ä²Ä
ÇÏ°Ô »ìÆìº¸¾Æ¾ß ÇÑ´Ù. ÃÖÀûÈ­½ÇÇàÀÚ´Â Ç×»ó ±×°Í¿¡ ´ëÇØ ¾Ë°í ÀÖÀ¸¹Ç·Î, ÀζóÀÎ
¾î¼Àºí¸® ÄÚµå´Â Á¤È®ÇÏÁö ¾Ê´Â Äڵ带 ¸¸µé¾î ³½´Ù.
±×·¯¸é, ¿©·¯ºÐµéÀÇ ¾î¼Àºí¸®¸¦ CPP ¸ÅÅ©·Î¿¡ ³õÀ» ¼ö ÀÖÀ¸¸ç, ¸ðµç »ç¶÷µéµµ
±×°ÍÀ» C ÇÔ¼ö/¸ÅÅ©·Î·Î »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
ÀζóÀÎ ÇÔ¼ö´Â ¸ÅÅ©·Î¿Í ¸Å¿ì ¸¹ÀÌ ºñ½ÁÇѵ¥, ±×°ÍÀº °¡²û »ç¿ëÀ» Çϱâ À§ÇØ
±ú²ýÇÏ°Ô Ã»¼ÒµÉ ¶§°¡ ÀÖ´Ù.
±×·¯ÇÑ °æ¿ì¿¡ Äڵ尡 º¹»ç°¡ µÉ ¼ö ÀÖÀ¸´Ï ÁÖÀÇÇØ¾ß ÇÑ´Ù.
±×·¡¼­ ·ÎÄà ¶óº§("1:" ½ºÅ¸ÀÏÀÇ)¿¡¼­¸¸Àº ¾î¼Àºí¸® Äڵ忡¼­ Á¤ÀǵǾî ÀÖ¾î¾ß
ÇÑ´Ù.
±×·¸´Ù ÇÒÁö¶óµµ, ¸ÅÅ©·Î´Â ·ÎÄÃÀÌ ¾Æ´Ñ Á¤ÀǶóº§ÀÇ À̸§µµ  Çã¿ëÀ» ÇÑ´Ù.
¶ÇÇÑ, ¿©·¯ºÐµéÀÇ Äڵ峪 GCCÀÇ Á¶±ÝÀÇ ¹ö±×´Â ·¹Áö½ºÅÍ ±ÔÁ¤ÀÌ ¾Æ¸¶µµ ¼±¾ðµÇ
Áö ¾Ê¾ÒÀ» ¶§, ÀζóÀÎ ÇÔ¼ö¸¦ ¾î¼Àºí¸® ÄÚµå·Î »ç¿ëÇÒ ¶§, ³ªÅ¸³¯ ¼ö ÀÖÀ» °Í
À̸ç GCC¸¦ È¥µ¿¿¡ ºü¶ß¸°´Ù.
¸¶Áö¸·À¸·Î, C ¾ð¾î´Â ±×Â÷ü°¡ ¾î¼Àºí¸® ÇÁ·Î±×·¡¹Ö¿¡ À־ Á¦¹ý ±¦ÂúÀº
Ãß»óÈ­ ¶ó°í ´ë¿ì¹Þ°í ÀÖ´Ù. ¾î¼Àºí¸µÀÇ °íÃæ¿¡¼­ ¸¹Àº ºÎºÐÀ» µé ¼öµµ ÀÖÀ»
°ÍÀÌ´Ù.
±×¸®°í ÇÔ¼ö·Î ÀÎÀÚ¸¦ ·¹Áö½ºÅ͸¦ ÅëÇØ ³Ñ°ÜÁÖ´Â ¸î¸î ÃÖÀûÈ­´Â ¾î¼Àºí¸®¿¡¼­ ±×
ÇÔ¼ö¸¦ ºÎ¸¦ ¶§ ºÎÀû´ç ÇÒ ¼öµµ ÀÖ´Ù. Àû¾îµµ ¿©·¯ºÐµéÀÌ ¾îÆ®¸®º× asmlinkage
¿¡°Ô ±×°ÍµéÀ» ÁÖ¾î¾ß ÇÑ´Ù. ¸®´ª½º Ä¿³Î ¼Ò½ºÀÇ ºÎºÐÀ» Âü°í ÇÒ ¼ö ÀÖ´Ù.
</P>

<sect2>GAS<p>
GAS´Â Àý´ë·Î ¸ÅÅ©·Î ±â´ÉÀ» Æ÷ÇÔÇϰí ÀÖÁö ¾Ê´Ù.
±×·¯³ª, GCC ¿Í °Ç³×Áö´Â .S ÆÄÀϵéÀº ±×°ÍµéÀÌ GAS¿¡°Ô °Ç³×Áö±â Àü¿¡ CPP¸¦ Åë
ÇÒ ¼öµµ ÀÖ´Ù.
.s ÆÄÀÏÀº Çϳª¸¦ »ý¼º½ÃŰ°í ¹Ù·Î GAS¿¡°Ô·Î °Ç³×Áø´Ù.
´Ù½ÃÇѹø ¸»ÇÏÁö¸¸, ¿¹¸¦ º¼·Á¸é ¸®´ª½º ¼Ò½ºµéÀ» º¸¶ó.
</P>

<sect2>GASP<p>
º¸ÅëÀÇ °ÅÀÇ ¸ðµç ¸ÅÅ©·Î¾î¼Àºí¸®¸¦ GAS¿¡°Ô º¸ÅÄ´Ù.
texinfo doc¸¦ º¸¶ó.
</P>

<sect2>AS86<p>
À̰ÍÀº °£´ÜÇÑ ¸ÅÅ©·Î¸¦ Á¦°øÇÑ´Ù. ³ª´Â docµéÀ» ¸øÃ£¾Ò´Ù.
ÀÌ ¼Ò½ºµéÀº ¾ÆÁÖ °£°áÇÏ°í ±ò²ûÇÏ´Ù.
¿©·¯ºÐµéÀÌ Èï¹Ì¸¦ °¡Áø´Ù¸é ±×°ÍµéÀ» ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
Ãʺ¸ÀûÀÎ °Íº¸´Ù ´õ ¸¹ÀÌ ¾Ë°í ½Í´Ù¸é ¿ÜºÎÇÊÅ͸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.
(¾Æ·¡ÀÇ 3.2 ºÎºÐÀ» º¸¶ó.)
</P>

<sect2>´Ù¸¥ ¾î¼Àºí·¯µé<p>
Win32FORTH:
CODE ¿Í END-CODE´Â ÇØ¼³¸ðµå·ÎºÎÅÍ ¼±ÅÃÇÒ ¼ö ¾ø´Â ¸ÅÅ©·ÎÀÌ´Ù.
±×·¡¼­ ¾î¼Àºí¸µ µ¿¾ÈÀº FORTH ´Ü¾îÀÇ ¸ðµç °Íµé¿¡ Á¢±ÙÀ» ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
NASM:
¾ÆÁ÷ ¸ÅÅ©·Î¸¦ Á¦°øÇÏÁö ¾Ê´Â´Ù. ¾Æ·¡ÀÇ ¿ÜºÎ ÇÊÅÍ ºÎºÐÀ» º¸¶ó.
TUNES:
À̰͵µ ¾ÆÁ÷ Á¦°øÇÏÁö´Â ¾Ê´Â´Ù. ±×·¯³ª Scheme¾ð¾î´Â ±âºÐ³»Å°´Â µ¥·ÎÀÇ ¸ÞŸ
ÇÁ·Î±×·¡¹ÖÀ» Çã¿ëÇÏ´Â ÁøÁ¤ÇÑ °í±Þ¾ð¾îÀÌ´Ù.
</P>

<sect2>¿ÜºÎ ÇÊÅÍ<p>
¾î¼Àºí·¯¿¡¼­ ¾î¶² ¸ÅÅ©·Îµµ Á¦°øÀ» ÇÏ´øÁö, ¶Ç´Â ¿©·¯ºÐµéÀÌ ¾î¶² ¾ð¾î¸¦
»ç¿ëÇÑ´Ù°í ÇÏ´õ¶óµµ(C Á¶Â÷!) ±× ¾ð¾î´Â Ç¥ÇöÇÏ´Â µ¥ ÃæºÐÄ¡ ¾ÊÀ» °ÍÀÌ´Ù.
¿©·¯ºÐµéÀº Makefile ±ÔÄ¢À¸·Î ´ÙÀ½°ú °°ÀÌ ÆÄÀÏÀ» ¿ÜºÎÇÊÅ͸¦ ÅëÇØ °Ç³×ÁÙ ¼ö
ÀÖ´Ù.
<verb>
%.s:     %.S other_dependencies
         $(FILTER) $(FILTER_OPTIONS) < $< > $@
</verb>
</P>

<sect2>CPP<p>
CPP ´Â Ç¥Çö·Â¿¡ À־ Á» ¾àÇÏÁö¸¸ ½¬¿î °Íµé¿¡´Â ÃæºÐÇÏ´Ù.
±×°ÍÀÌ Ç¥ÁØÀ̶ó¸é GCC¿¡ ÀÇÇØ ºÒ¸®¿ö Áú °ÍÀÌ´Ù.
CPPÀÇ Á¦ÇÑµÈ Á¡¿¡¼­ º¸µíÀÌ, ¿ÀºêÁ§Æ®¸¦ ¼±¾ð ÇÒ ¼ö ¾øÀ¸¸ç, µû¶ó¼­ ÆÄ±«ÀÚ
(destructors)´Â ÀÚµ¿ÀûÀ¸·Î ¼±¾ðºí·°ÀÇ ¸¶Áö¸·¿¡¼­ ÄݵȴÙ. ±×¸®°í µ¥ÀÌŸ³ª
Äڵ带 ó¸®Çϱâ À§ÇØ ±×°ÍÀ» °øÅë ¼±¾ðÀ» ÇÒ ¼ö ¾ø´Ù.
CPP´Â C ÄÄÆÄÀÏ·¯¿¡ µû¶ó¿Â´Ù.
GCC´Â ¿©·¯ºÐµéÀÌ °¡Á®¿Ã ¼ö ÀÖ´Â ÀÚÀ¯·Î¿î C ÄÄÆÄÀÏ·¯ÀÌ´Ù.
</P>

<sect2>M4<p>
M4´Â ¸ÅÅ©·Î󸮿¡ À־ Ź¿ùÇÑ ´É·ÂÀ» º¸¿©ÁØ´Ù. Àç±ÍÀû Ç¥Çö, Áú¼­Á¤¿¬ÇÑ
±ÔÄ¢µî¿¡ À־ ±¦Âú¾Æ º¸ÀδÙ.
CPP°¡ ÇÒ ¼ö ¾ø´Â ¸ðµç °ÍµéÀ» ±×°ÍÀ¸·Î ÇÒ ¼ö ÀÖ´Ù.
macro4th/This4th ¸¦ ¾Æ·¡¿¡¼­ º¸¶ó.
         <url url="ftp://ftp.forth.org/pub/Forth/ in Reviewed/ ANS/" name="ftp.forth.org/pub/Forth/ in Reviewed/ ANS/"> (?),
¶Ç´Â Tunes 0.0.0.25 ¼Ò½º¸¦ m4¸¦ »ç¿ëÇÏ´Â Áøº¸ÇÑ ¸ÅÅ©·Î ó¸®ÀÇ ¿¹Á¦·Î¼­
º¸´Â °Íµµ ±¦ÂúÀ» °ÍÀÌ´Ù.
m4ÀÇ ¶óÀÌÆ®¹öÁ¯Àº GNU m4 1.4 (ÀÌ»ó)À¸·Î ±¸ÇÒ ¼ö ÀÖ´Ù.
</P>

<sect2>ÇÊÅ͸¦ ÅëÇÑ ¸ÅÅ©·Î ó¸®<p>
¿©·¯ºÐµéÀº °£´ÜÇÑ ¸ÅÅ©·Î È®Àå ÇÊÅ͸¦ ¾µ ¼ö ÀÖ´Ù. perl, awk, sed µîÀ»
»ç¿ëÇÔÀ¸·Î½á °¡´ÉÇÏ´Ù.
ÀÌ·¸°Ô ÇÏ´Â °ÍÀÌ ºü¸£¸ç, °ÅÀÇ ¸ðµç °ÍÀ» Á¦¾î ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
</P>

<sect2>¸ÞŸ ÇÁ·Î±×·¡¹Ö<p>
[»ý·«]
</P>

<sect>ÄÁº¥¼Ç ºÎ¸£±â
<sect1>4.1 Linux
<sect2>GCC·Î ¸µÅ©Çϱâ<p>
32ºñÆ® ÀÎÀÚ´Â 32ºñÆ® near¸®ÅÏ ¾îµå·¹½ºÀ§·Î ½ºÅÃ»ó¿¡ Çª½¬µÈ´Ù.
%ebp, %esi, %edi, %ebx °¡ ÀúÀåµÈ´Ù.
%eax¿¡ °á°ú°¡ ´ã±â°Å³ª %edx:%eax¿¡ 64ºñÆ® °á°ú°¡ ´ã±ä´Ù.
GCC´Â ÀúÀåµÈ ·¹Áö½ºÅÍ¿¡ ÀÇÇØ È£ÃâµÇ´Â ÄÁº¥¼ÇÀ» º¯°æÇÒ ¼ö ÀÖ´Â ¿É¼ÇÀ»
°¡Áö°í ÀÖÀ¸¸ç, ·¹Áö½ºÅÍ¿¡ ÀÎÀÚ¸¦ °¡Áö°í ÀÖÀ¸³ª FPU¸¦ »ý°¢ÇÏÁö ¾Ê´Â´Ù.
i386 ÀÎÆ÷ ÆäÀÌÁö¸¦ üũÇ϶ó.
GCC°¡ ÀÌ·¯ÇÑ Ç¥ÁØ ÄÁº¥¼ÇÀ» Á¦°øÇÒ·Á¸é ÇÔ¼ö¸¦ À§ÇØ asmlinkage attribute¸¦
¼±¾ðÇØ¾ß ÇÑ´Ù.
(³ª´Â ¾î¶»°Ô ±×°ÍÀÌ ÄÁº¥¼ÇÀ» ºÒ·¯¼­ º¯°æÇÏ´Â Áö¸¦ ¾ËÁö ¸øÇÑ´Ù.)
</P>

<sect2>ELF vs a.out ¹®Á¦µé<p>
¾î¶² C ÄÄÆÄÀÏ·¯´Â ¸ðµç ½Éº¼ Àü¿¡ °­Á¶¸¦ ÁغñÇÑ´Ù.
Ưº°È÷, ¸®´ª½º a.out GCC ´Â ¸®´ª½º ELF GCC°¡ ¾øÀ» µ¿¾È ±×·¯ÇÑ Áغñ¸¦ ÇÑ´Ù.
¸®´ª½º ¼Ò½º Æ®¸®°¡ ±×°ÍÀ» ¾î¶»°Ô °ü¸®ÇÏ´Â Áö¸¦ º¸¶ó.
(linux/include/linux/linkage.h).
¿©·¯ºÐµéÀº C->asm À̸§ º¯°æÀ» ´ÙÀ½°ú °°Àº ±â¼úÀ» »ðÀÔÇÔÀ¸·Î½á ¶Ù¾î³ÑÀ» ¼ö
ÀÖ´Ù.
            void foo asm("bar") (void);
foo ÇÔ¼ö¸¦ È®½ÇÈ÷ Çϱâ À§Çؼ­´Â ¾î¼Àºí¸®¿¡¼­ bar¸¦ È£ÃâÇØ¾ß ÇÑ´Ù.
binutils ÆÐŰÁö¾ÈÀÇ objcopy À¯Æ¿¸®Æ¼´Â a.out ¸ñÀûÆÄÀÏÀº ELF ¸ñÀûÆÄÀÏ·Î
¸¸µé¼ö ÀÖÀ¸¸ç ¹Ý´ëÀÇ °æ¿ìµµ °¡²û °¡´É ÇÒ °ÍÀÌ´Ù.
</P>

<sect2>Á÷Á¢ÀûÀÎ ¸®´ª½º ½Ã½ºÅÛ ÄÝ<p>
À̰ÍÀº Àç¸í¸íÇÒ ¼ö ¾ø´Ù. ¿Ö³ÄÇϸé À̰ÍÀº ¹Ù²î¸é ȣȯ¼ºÀÌ ¾ø¾îÁö±â ¶§¹®ÀÌ´Ù.
±×¸®°í À̰ÍÀº libcÀÇ °íÁ¤ÀûÀÎ °Íµé°ú È®ÀåµÈ °ÍµéÀ» ¹æÇØÇÑ´Ù.
Á¤¼®À¸·Î ÇÏÀÚ¸é, ¸®´ª½º ½Ã½ºÅÛ ¼­ºñ½º ÄÝÀ» Àç¸í¸íÇÏ´Â °ÍÀº libc¸¦ ÅëÇØ¼­
ÇÑ´Ù.
ÀÌÁ¦, libc·Î ¸µÅ©¸¦ ½ÃŰ´Â °ÍÀ» ¿øÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ¾Æ·¡¿¡¼­ linux-eforth-
1.0c.tgz À» º¸¶ó.
         <url url="ftp://ftp.forth.org/pub/Forth/Linux/" name="ftp.forth.org/pub/Forth/Linux/">
¸®´ª½º ¼Ò½º°¡ µû¶ó¿Ã °ÍÀÌ´Ù. ¾î¶»°Ô ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇÒ °ÍÀÎÁö¸¦ ¼³¸íÇÏ´Â
asm/unistd.h Çì´õÆÄÀϵµ µû¶ó¿Â´Ù.
±âº»ÀûÀ¸·Î ¿©·¯ºÐµéÀº %eax¿¡ __NR_syscallname ¹øÈ£¸¦ ³Ö°í, ÆÄ¶ó¸ÞŸ¸¦ %ebx,
%ecx, %edx, %esi, %edi¿¡ °¢°¢ ³Ö°í int $0x80À» »ç¿ë ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
°á°ú´Â %eax¿¡ ¸®Åϵǰí, ¿¡·¯½Ã¿¡´Â libc°¡ errno¸¦ ¼¼ÆÃÇÏ´Â °Í¿¡ ÇØ´çÇÏ´Â
°á°ú¸¦ À½¼ö·Î %eax¿¡ ³õ´Â´Ù.
»ç¿ëÀÚ ½ºÅØÀº °Ç´õ¸®Áö ¾Ê´Âµ¥, ½Ã½ºÅÛ ÄÝÀÌ ºÒ¸®¿ö Áö´Â µ¿¾È º°´Ù´Â °ÍÀÌ ÇÊ
¿äÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù.
</P>

<sect1>µµ½º<p>
ÃÖ±ÙÀÇ µµ½º ÀͽºÅÙ´õµé¿¡´Â µµ½º¼­ºñ½º¸¦ À§ÇÑ ÀÎÅÍÆäÀ̽º°¡ µû¶ó¿Â´Ù.
±×¿¡ ´ëÇÑ docÆÄÀϵéÀ» Àо¶ó.
º¸ÅëÀº int 0x21À» Èä³»³»´Âµ¥, µû¶ó¼­ ¸®¾ó¸ðµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô µÈ´Ù.
(³ª´Â ±×°ÍµéÀÌ, ÇÊ¿äÇÒ ¶§ 32ºñÆ® ÀÛµ¿ÀÚ¸¦ »ç¿ëÇÏ¿© 16ºñÆ® µµ½º ¼­ºñ½º¸¦
È£ÃâÇÔÀ¸·Î½á ÀÛ¾÷À» ÇÒ ¼ö ÀÖÀ¸¸®¶ó°í´Â »ý°¢Ä¡ ¾Ê´Â´Ù.)
DPMI¿¡ °üÇÑ docÀº ´ÙÀ½¿¡¼­ ãÀ» ¼ö ÀÖ´Ù.
         <url url="ftp://ftp.oulu.fi/pub/msdos/programming/" name="ftp.oulu.fi/pub/msdos/programming/">
DJGPP ¿¡´Â ÀÚüÀÇ (Á¦ÇѵÈ) ±³Ã¼µÈ libc°¡ µû¶ó¿Â´Ù.
À̰ÍÀº ¸®´ª½º¿¡¼­ µµ½º·Î Å©·Î½ºÄÄÆÄÀÏÀÌ °¡´ÉÇÏ´Ù.
±×·¯³ª ÇöÀç ÀÖ´Â ÆÐÄ¡´Â a.out GCC¿ëÀ̸ç ÃÖ±ÙÀÇ ELF GCC´Â ÆÐÄ¡°¡ ÇÊ¿ä¾øÀ»
°ÍÀÌ´Ù.
¸¸ÀÏ ±×°ÍµéÀÌ »õ·Î¿î ÆÐÄ¡¸¦ ÇÊ¿ä·Î ÇÑ´Ù¸é ³­¸ð¸£°Ú´Ù..
</P>

<sect1>¿©·¯ºÐµéÀÇ OS<p>
[¾î¼Àºí¸® ÇÁ·Î±×·¡¸ÓµéÀÌ ¸¹ÀÌ ±×°Í¿¡ ´ëÇØ À̾߱â Çϰí ÀÖ´Â °ÍÀÌ´Ù.]
</P>

<sect2>ºÎÆ® ·Î´õ ÄÚµå¿Í 32ºñÆ® ¸ðµå·Î µé¾î°¡±â
<sect2>ÇÁ·ÎÅØ¼ÇÀÇ ±âÃÊ
<sect2>ÀÎÅÍ·´Æ® ´Ù·ç±â
<sect2>16ºñÆ® ½Ã½ºÅÛ ¼­ºñ½º¸¦ »ç¿ëÇÏ´Â V86/R86 ¸ðµå
<sect2>À̰͵鿡 ´ëÇÑ Á¤º¸¸¦ ¾îµð¼­ ¾òÀ» °ÍÀΰ¡<p>
[´Ù¸¥ ¹®¼­¿¡ À̺κе鿡 ´ëÇÑ ¾È³»Ç¥½Ã¸¦ º¸ÅÂÁֱ⠹ٶõ´Ù]
Á¤º¸ÀÇ Áß¿äÇÑ ¼Ò½º´Â OS¿¡ Á¸ÀçÇϰí ÀÖ´Ù.
¸¹Àº ¾È³»Ç¥½ÃµéÀÌ ¾Æ·¡ÀÇ WWW ÆäÀÌÁö¿¡ ÀÖ´Ù.
       <url url="http://www.eleves.ens.fr:8080/home/rideau/Tunes/Review/OSes.html" name="www.eleves.ens.fr:8080/home/rideau/Tunes/Review/OSes.html">
</P>

<sect>ÇØ¾ß ÇÒÀÏ<p>
<itemize>
<item>ºÒ¿ÏÀüÇÑ ºÎºÐ ä¿ì±â
<item>¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇÑ ´õ ¸¹Àº ¾È³»Ç¥Áö º¸Å±â
<item>½ÇÁ¦ »ýȰ¿¡ º¸ÅÆÀÌ µÇµµ·Ï Á¦¾ÈµÈ °¢°¢ÀÇ ¼Ö·ç¼ÇµéÀÇ ¹®¹ý, ÆÄ¿ö, Á¦ÇÑÁ¡
  µîÀ» ¼³¸íÇÒ ¼ö ÀÖ´Â °£´ÜÇÑ ¿¹Á¦ º¸Å±â
³¡.
</itemize>
</article>




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2003-08-10 11:52:29
Processing time 0.0018 sec