¾î ¼À ºí ¸® H O W T O V 0 . 3 C¿øÀúÀÚ : Francois-Rene Rideau rideau@ens.fr¹ö Á¯ : 1996.6.15 0.3C ¹ø¿ªÀÚ : Çѵ¿ÈÆ ddoch@hitel.kol.co.kr ¹ø¿ªÀÏ : 1996.9.27( ¹ø¿ªÁÖ: ÀÌ ¹ø¿ª¹®¼´Â ºÎÁ·ÇÑ ÀúÀÇ ¹®Àå½Ç·ÂÀ¸·Î Çʿ伺¿¡ ÀÇÇÏ¿© ¹ø¿ªÇÑ °á°ú·Î À߸øµÈ ¿À¿ª°ú Àǹ̿¡ ÀÌ»ó¾ø´Â ºÎºÐÀÌ ºüÁú ¼öµµ ÀÖÀ½À» ¹Ì¸® ¾Ë¸³´Ï´Ù. µû¶ó¼ À߸øµÈ ¹ø¿ªÀ¸·Î ¿À´Â Ã¥ÀÓÀº Àú¿¡°Ô ¾øÀ¸¸ç, ¸¸ÀÏ ¼öÁ¤ÇØ¾ß ÇÒ °÷ÀÌ ÀÖ´Ù¸é Àú¿¡°Ô ¿¬¶ôÀ» ÇØÁֽñ⠹ٶó¸ç, ¿øÀúÀÇ ¿À·ù¶ó¸é ¿øÀúÀÚ¿¡°Ô ¿¬¶ôÇØÁֽñ⠹ٶø´Ï´Ù.) ¾î¼Àºí¸® 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ÁøÇàÀ» ³ª´©¾î¼ Çϱâ, ¿Ö³ÄÇÏ¸é ³ª´Â ´Ù¸¥ ÀÏÀ» ÇÏ°í Àֱ⠶§¹®ÀÌ´Ù... ´Ù¸¥ °æ¿ì, ³ª¿¡°Ô ¿¬¶ôÇØ ´Þ¶ó.( ¸ÞÀÏ: rideau@ens.fr) ¾Æ¸¶µµ ¿ì¸®´Â Raymond Moon ¿¡°Ô comp.lang.asm.x86¿¡ ÀÖ´Â °ÅÀÇ FAQ¿¡ À̺κÐÀ» º¸Å´ °ÍÀ» ³³µæ½Ãų ¼ö ÀÖÀ» °ÍÀÌ´Ù. 1. ½ÃÀÛÀÌ ¹®¼´Â ¸®´ª½º ¿î¿µÃ¼Á¦¿¡¼ ÇÁ¸® ¾î¼Àºí·¯¸¦ »ç¿ëÇÑ 32ºñÆ® x86 ¾î¼Àºí¸® ÇÁ·Î±×·¡¹ÖÀ̳ª ÇÁ·Î±×·¥µé¿¡ ´ëÇØ Áú¹®ÇÏ´Â »ç¶÷µé¿¡°Ô ´äº¯Çϱâ À§ÇØ Á¦ÀÛ ÀÌ µÇ¾ú´Ù. ±×°ÍÀº ¶ÇÇÑ ÇÁ¸®°¡ ¾Æ´Ñ, x86ÀÌ ¾Æ´Ñ, 32ºñÆ® ¾î¼Àºí·¯°¡ ¾Æ´Ñ ±×·¯ÇÑ °Íµé¿¡ ´ëÇÑ ¹®¼µéÀ» ¾ð±ÞÇÒ ¼ö ÀÖ´Ù. ¿Ö³ÄÇÏ¸é ¾î¼Àºí¸® ÇÁ·Î±×·¡¹Ö¿¡¼ ÁÖ·Î Èï¹ÌÀÖ´Â ºÐ¾ß´Â ¿î¿µÃ¼Á¦, ¾ð¾î, °ÔÀÓ, C ÄÄÆÄÀÏ·¯°¡ Ç¥ÇöÀ» Á¦´ë·Î Çϱâ Èûµç ºÎºÐµéÀ» °Ç´õ¸®´Â °ÍÀÌ´Ù. ¿ì¸®´Â ±×·¯ÇÑ ¼ÒÇÁÆ®¿þ¾î °³¹ßÀ» ¸ñÇ¥·Î ÇÏ°í ÀÖ´Ù. 1.1 ÀÌ ¹®¼¸¦ È°¿ëÇÏ´Â ¹æ¹ýÀÌ ¹®¼´Â Á¾Á¾ Áú¹®ÇÏ´Â °Íµé¿¡ ´ëÇÑ ´äº¯µéÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù. ¸¹Àº °æ¿ì, ¼ÒÇÁÆ®¿þ¾î³ª ¹®¼ »çÀÌÆ®¿¡ URLÀÌ ÁÖ¾îÁø´Ù. °¡Àå À¯¿ëÇÑ »çÀÌÆ®°¡ ¹Ì·¯ µÇ¾ú°í, °¡±îÀÌÀÇ ¹Ì·¯ »çÀÌÆ®¸¦ ÅëÇØ ÀÌ¿ëÇÒ ¼ö ÀÖ ´Ù¸é, ¿©·¯ºÐµéÀº ¾Æ±î¿î ÀÚ½ÅÀÇ ½Ã°£À» ¹ö¸®Áö ¾Ê°í, ºÒÇÊ¿äÇÑ ³ë·ÂÀ» ÁÙÀÏ ¼ö ÀÕÀ» °ÍÀÌ´Ù. ƯÀÌÇÑ °æ¿ì¿¡, Àαâ»çÀÌÆ®¸¦ ¹Ì·¯ÇÏ´Â ¼¼°è¿¡¼ ¾ÆÁÖ Å« »çÀÌÆ®°¡ ÀÖ´Ù. º¸ÅëÀº ¹Ì·¯¸®½ºÆ®µéÀÌ ÆÄÀÏ·Î Á¦°øµÉ ¼öµµ ÀÖ°í ¶Ç´Â, ·Î±ä ¸Þ¼¼Áö¿¡ ³ªÅ¸³´Ù. Ãæ°í¸¦ ¹Þ¾Æµé¿©¶ó. ±×¹Û¿¡, ¿©·¯ºÐµéÀº ã°íÀÚ ÇÏ´Â °ÍÀ» archie¸¦ ÀÌ¿ëÇÔÀ¸·Î½á ÇØ°áÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. °¡Àå ÃÖ±ÙÀÇ ¹®¼¹öÁ¯ÀÌ ÀÖ´Â °÷Àº ´ÙÀ½°ú °°´Ù. http://www.eleves.ens.fr:8080/home/rideau/Assembly ±×·¯³ª ¸®´ª½º ÇÏ¿ìÅõ ½ÎÀÌÆ®´Â Á¤¸» ¹ø°³°°ÀÌ ¾÷µ¥ÀÌÆ® µÈ´Ù. ³ªµµ ¸ð¸£´Â »çÀÌ¿¡.. sunsite.unc.edu/pub/linux/docs/HOWTO/ (?) 1.2 ´Ù¸¥ °ü·Ã ¹®¼* ¸¸ÀÏ ¿©·¯ºÐµéÀÌ ÇÁ¸® ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇØ Àß ¸ð¸¥´Ù¸é GNU °ø°ø ¶óÀ̼¾½º¸¦ ÁÖÀÇ ±í°Ô ÀÐ¾î º¸±æ ¹Ù¶õ´Ù. ±×°ÍÀº ¸¹Àº ÇÁ¸® ¼ÒÇÁÆ®¿þ¾îµé°ú ´ëºÎºÐÀÇ ¸ð µ¨¿¡¼ »ç¿ëµÇ¾î Áö°í ÀÖ´Ù: º¸Åë "COPYING"À̶ó´Â ÆÄÀÏÀ̸§À¸·Î µé¾î ÀÖÀ¸¸ç, ¶óÀ̺귯¸®¹öÁ¯À̶ó¸é "COPYING.LIB" ¶ó´Â À̸§À¸·Î µÇ¾î ÀÖÀ» °ÍÀÌ´Ù. FSF(free software foundation)ÀÇ ¹®Àå°¡µéÀº ¶ÇÇÑ ´ç½ÅÀ» µµ¿ï °ÍÀÌ´Ù. * Ưº°ÇÏ°Ô, Èï¹ÌÀÖ´Â ÇÁ¸® ¼ÒÇÁÆ®¿þ¾îµéÀº ´ëºÎºÐ ¼Ò½º¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Â µ¥, ¿©·¯ºÐµéÀº ÀÌ°ÍÀ» Âü°íÇϰųª, ¼öÁ¤Çϰųª, ¶§·Î´Â ±×³É ±×´ë·Î Â÷¿ëÇؼ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿©·¯ºÐµé¿¡°Ô ÁÖ¾îÁö´Â ¶óÀ̼¾½º¸¦ ÁÖÀDZí°Ô ÀÐ°í ±×±â¿¡ µû¸£´Â °ÍÀÌ ÁÁ´Ù. * x86 ¾î¼Àºí¸® ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ÀϹÝÀûÀÎ Áú¹®°ú ¸î¸îÀÇ »ó¾÷ÀûÀÎ ¾î¼Àºí·¯ (16ºñÆ® µµ½ºÈ¯°æÀÇ..)¿¡ ´ëÇÑ Áú¹®¿¡ ´ëÇÑ ´äº¯µéÀ» ´ã°í ÀÖ´Â comp.lang. asm.x86À» À§ÇÑ FAQ°¡ ÀÖ´Ù. ±×Áß¿¡¼ ¸î°³´Â ÇÁ¸® 32ºñÆ® ¾î¼Àºí¸® ÇÁ·Î±×·¡¹Ö¿¡ Àû¿ëÀÌ µÇ´Â µ¥, ¿©·¯ºÐ µéÀº ÀÌ FAQ¸¦ ´ÙÀ½¿¡¼ ÀÐÀ» ¼ö ÀÖ´Ù. www2.dgsys.com/~raymoon/faq/asmfaq.zip * FAQµé°ú docµéÀº µ¶ÀÚ ¿©·¯ºÐµéÀÇ Ç÷§Æû»óÀÇ ÇÁ·Î±×·¡¹Ö¿¡ °ü·ÃµÈ °ÍµéÀÌ ÀÖ´Ù. ±×¸®°í Ç÷§Æû ÀÇÁ¸ÀûÀÎ °ÍµéÀº ¾î¼Àºí·¯¿¡¼ ÇÁ·Î±×·¡¹Ö¿¡ ¹Ù·Î Àû¿ë ÀÌ µÇÁö ¾Ê´Â ´Ù´Â Á¡À» ÂüÁ¶ÇÏ¿©¾ß ÇÑ´Ù. 2. ¾î¼Àºí·¯µé2.1 GCC ÀζóÀÎ ¾î¼Àºí¸®Àß ¾Ë·ÁÁø ¹Ù¿Í °°ÀÌ, GNU ÇÁ·ÎÁ§Æ®¿¡¼ Áß¿äÇÑ À§Ä¡¸¦ Â÷ÁöÇÏ°í ÀÖ´Â ÃÖÀûÈµÈ 32ºñÆ® ÄÄÆÄÀÏ·¯ÀÎ GNU C/C++ ÄÄÆÄÀÏ·¯ (GCC)´Â x86 ¾ÆÅ°ÅØÃĸ¦°·ÂÇÏ°Ô Áö¿ø ÇÑ´Ù. ±×¸®°í C ÇÁ·Î±×·¥¾È¿¡ ¾î¼Àºí¸® Äڵ带 »ðÀÔÇÒ ¼ö ÀÖ´Â ´É·ÂÀ» Á¦°øÇÑ´Ù. GCC ´Â ´ëºÎºÐÀÇ °¡´ÉÇÑ Ç÷§Æû¿¡¼ µ¿ÀÛÇÑ´Ù. ±×Áß¿¡¼µµ Linux, *BSD, VSTa, OS/2, *DOS, Win*, µîµî.. GCC°¡ ÀÖ´Â °÷GCC ¿øº»»çÀÌÆ®´Â prep.ai.mit.edu/pub/gnu/ ¿¡ ´Ù¸¥ GNU °èȹ¿¡ ÀÇÇÑ ¾îÇø®ÄÉÀÌ¼Ç ¼ÒÇÁÆ®¿þ¾îµé°ú °°ÀÌ ¹ßÇ¥µÈ´Ù. ±×¸®°í, ¶ÇÇÑ ¸¹Àº ¹Ì·¯ »çÀÌÆ®µéÀÌ Á¸ÀçÇÏ°í ÀÖ´Ù. ¿©·¯ºÐµéÀÇ °³¹æÀûÀÎ OS¿¡ ¸Âµµ·Ï °³Á¤µÈ ¼Ò½ºµé°ú ¹Ì¸® ÄÄÆÄÀÏµÈ ¹ÙÀ̳ʸ®µéÀÌ Åë»óÀûÀÎ FTP »çÀÌÆ®¿¡ÀÖ´Ù. inux ÀÇ GCC¸¦ »ç¿ëÇÑ´Ù¸é ¾Æ·¡¿¡ °¡º»´Ù. www.linux.org.uk/ °¡Àå Àαâ ÀÖ´Â µµ½º±â¹ÝÀÇ GCC´Â DJGPPÀÌ´Ù. ´ÙÀ½ »çÀÌÆ®ÀÇ µð·ºÅ丮¿¡¼ ¹ß°ßÇÒ ¼ö ÀÖ´Ù: www.delorie.com/djgpp/ OS/2 ±â¹ÝÀÇ µµ½º¿¡¼ ÀÛµ¿ÇÏ´Â GCC´Â ¶ÇÇÑ EMX¶ó ºÒ¸°´Ù; www.leo.org/pub/comp/os/os2/gnu/emx+gcc/ warp.eecs.berkeley.edu/os2/software/shareware/emx.html GCC ÀζóÀÎ ¾î¼Àºí¸® DOCµéÀ» ±¸ÇÏ´Â °÷GCC ¹®¼´Â texinfo Æ÷¸äÀ¸·Î ¹®¼ÆÄÀϵéÀ» Æ÷ÇÔÇÑ´Ù. ´ç½ÅÀº ±×°ÍÀ» Åؽº·Î º¯ ȯÇÒ ¼ö ÀÖ°í, Åؽº·Î ÄÄÆÄÀÏ ÇÒ¼öµµ ÀÖÀ¸¸ç, ÇÁ¸°Æ®¸¦ ÇÏ´øÁö, À̸·½º .infoÆÄÀÏ À̳ª ºê¶ó¿ìÀú, ±âŸ ¿©·¯ºÐµéÀÌ ÁÁ¾ÆÇÏ´Â Æ÷¸äÀ¸·Î º¯È¯ÇÒ ¼ö ÀÖ´Ù. .info ÆÄÀÏÀº GCCÀÇ ±¦ÂúÀº ¼³Ä¡º»¿¡´Â µé¾î ÀÖ´Â °Í °°´Ù. ±× ºÎºÐÀº ´ÙÀ½°ú °°´Ù: C È®Àå::È®ÀåµÈ Asm:: ºÎºÐ GCC ºÒ·¯¿À±â::¼ºê¸ðµ¨ ¿É¼Ç::i386 ¿É¼Ç:: ÀÌ·¯ÇÑ °ÍµéÀÌ µµ¿òÀÌ µÉ °ÍÀÌ´Ù. ¼¼¼¼ÇÏ°Ô º¸¸é, ±×°ÍÀº i386ÀÇ ·¹Áö½ºÅ͸¦ À§ ÇØ Æ¯º°È÷ ±ÔÁ¤µÈ À̸§À» Á¦°øÇÑ´Ù: abcdSDB ´Â %eax, %ebx, %ecx, %edx,%esi, %edi, %ebp ¿Í Çϳª¾¿ ÀÏÄ¡ÇÑ´Ù. (%esp¿¡´Â ±ÛÀÚ°¡ ¹è´çµÇ¾î ÀÖÁö ¾Ê´Ù.) HTML Æ÷¸äÀ¸·Î º¯È¯µÈ ÀÌ·¯ÇÑ ¹®¼µé°ú ºÎºÐµéÀÇ URLÀº ´ÙÀ½°ú °°´Ù. www.cygnus.com/doc/usegcc_89.html#SEC92 DJGPP °ÔÀÓ¸®¼Ò½º (°ÔÀÓ ÇØÄ¿µé¿¡°Ô »Ó¸¸ÀÌ ¾Æ´Ï¶ó)´Â Ưº°ÇÏ°Ô ¾î¼Àºí¸®¿¡ °üÇÑ ÀÌ·¯ÇÑ ÆäÀÌÁö¸¦ °¡Áö°í ÀÖ´Ù: www.rt66.com/~brennan/djgpp/djgpp_asm.html ¸¶Áö¸·À¸·Î, ÀÌ·¯ÇÑ À¥ÆäÀÌÁöµéÀº "DJGPP Quick ASM Programming Guide" ·Î ºÒ¸®¿öÁö°í FAQµé°ú AT&T x86 ¾î¼Àºí¸® ¹®¹ý, ¸î¸îÀÇ ÀζóÀÎ ¾î¼Àºí¸® Á¤º¸, .obj/.lib ÆÄÀϵéÀ» º¯È¯ÇÏ´Â °Íµé¿¡ ´ëÇÑ °Íµé·Î °¡µæÂ÷ ÀÖ´Ù. remus.rutgers.edu/~avly/djasm.html GCC ´Â ¾î¼Àºí¸µ¿¡¼´Â GAS¿¡ ÀÇÁ¸ÇÏ°í ¾Æ·¡ÀÇ ¹®¹ýÀ» µû¸¥´Ù; ÀζóÀÎ ¾î¼Àºí¸®´Â ÀοëµÈ ÆÛ¼¾Æ® ¹®ÀÚ¸¦ ÇÊ¿ä·Î ÇÑ´Ù. ±×·¡¼ ±×°ÍµéÀº GAS ¿¡°Ô·Î °Ç³×Áø´Ù. ¾Æ·¡ÀÇ GAS¿¡ ´ëÇÑ ºÎºÐÀ» º¸ÀÚ. ¸¹Àº À¯¿ëÇÑ ¿¹Á¦µéÀ» ¸®´ª½ºÀÇ linux/include/asm-i386/ ¼Ò½º ¼ºêµð·ºÅ丮 ¿¡¼ ã¾Æº¸ÀÚ. ¾î¶»°Ô GCC ¾È¿¡¼ Á¤È®È÷ ¾î¼Àºí¸® Äڵ带 ºÒ·¯³»´Â°¡?ÃÖÀûÈ¿Í ÀζóÀÎ ¾î¼Àºí¸®¸¦ °¡´ÉÇÏ°Ô Çϱâ À§Çؼ GCC ¸¦ "-O" Ç÷¡±×¿Í °°ÀÌ ºÒ·¯³»ÀÚ. ±×·¸°Ô ÇÏÁö ¾Ê´Â ´Ù¸é, ÄÚµå´Â ÄÄÆÄÀϵDZâ´Â Çϳª, Á¤È®È÷ µ¿ÀÛÇÏÁö ¾ÊÀ» °Í ÀÌ´Ù. Á» ´õ ÀϹÝÀûÀ¸·Î, x86 Ç÷§Æû¿¡¼ ÁÁÀº ÄÄÆÄÀÏ Ç÷¡±×´Â gcc -O2 -fomit-frame-pointer -m386Á¤µµ°¡ µÉ °ÍÀÌ´Ù. -O2 ´Â ÁÁÀº ÃÖÀûÈ ·¹º§ÀÌ´Ù. ÃÖÀûÈ¿¡ ´õÇÏ¿© ÄÄÆÄÀÏ·¯´Â Äڵ带 Å©°Ô ¸¸µç´Ù. ±×·¯³ª ±×°ÍÀº ´ÜÁö bit fasterÀÏ »ÓÀÌ´Ù; ±×·¯ÇÑ °ú´ÙÇÑ ÃÖÀûÈ´Â ·çÇÁ¸¦ ŸÀÌÆ®ÇÏ°Ô ¸¸µå´Â µ¥ Á¤µµ¿¡¸¸ À¯¿ëÇÒ ¼ö ÀÖ´Ù. ¿©·¯ºÐµéÀÌ ¾î¶»°Ôµç ¾î¼Àºí¸®¿¡¼ »ç¿ëÇÑ´Ù¸é ¸»ÀÌ´Ù. ±×°ÍÀÌ ÇÊ¿äÇÏ´Ù¸é ÇÊ¿äÇÑ ¸¸Å¸¸ÀÇ ·çƾµé¿¡ »ç¿ëÇ϶ó. -fomit-frame-pointer ´Â stupid frame pointer maintenance¸¦ °Ç³Ê¶Ù°Ô Äڵ带 »ý¼º½ÃÅ°°í, Äڵ带 Á»´õ ÀÛ°í ºü¸£°Ô ¸¸µé¸ç, ±× ÀÌ»óÀÇ ÃÖÀûȸ¦ À§Çؼ ·¹Áö½ºÅ͸¦ ÀÚÀ¯·Ó°Ô ÇÑ´Ù. ÀÌ°ÍÀº µð¹ö±ë Åø(gdb)µéÀ» »ç¿ëÇϱ⠾î·Æ°Ô ¸¸µé±ä Çϳª, ´õÀÌ»ó »çÀÌÁî¿Í ¼Óµµ ¸¦ Çâ»ó ½Ãų ¼ö ¾øÀ» °ÍÀÌ´Ù. -m386 Àº ¾î¶°ÇÑ ¼ÓµµÀÇ ÀúÇϾøÀÌ Á» ´õ ÄÞÆÑÆ®ÇÑ Äڵ带 »ý¼ºÇØ ³½´Ù. ( ÀÛÀº ÄÚµå´Â ¶ÇÇÑ µð½ºÅ© ÀÔÃâ·ÂÀ» Àû°Ô ¼öÇàÇÏ°í ºü¸¥ ½ÇÇàÀ» ÇÑ´Ù´Â °ÍÀ» ±â¾ïÇÏÀÚ.) ±×·¯³ª ¾Æ¸¶µµ À§¿¡ ¾ð±ÞÇÑ Å¸ÀÌÆ®ÇÑ ·çÇÁ»ó¿¡¼ ÀÏ °ÍÀÌ´Ù. Á»´õ ÃÖÀûÈ ÇÏ·Á¸é, -mregparm=2 ¿É¼ÇÀ̳ª ÀÌ¿¡ ´ëÀÀÇÏ´Â ÇÔ¼ö°¡ µµ¿òÀÌ µÉ °ÍÀÌ´Ù. ±×·¯³ª ¿ÜºÎ ÄÚµå¿Í ¸µÅ·À» ÇÒ¶§¿¡´Â ¸¹Àº ¹®Á¦Á¡µéÀÌ ¿©·¯ºÐµéÀ» ±«·ÓÈ÷°Ô µÉ °ÍÀÌ´Ù. ¿©·¯ºÐµéÀº ÀÌ·¯ÇÑ Ç÷¡±×µéÀ» ±âº»¼³Á¤ÆÄÀÏÀÎ /usr/lib/gcc-lib/i486-linux/2.7.2/specs¿¡ Ãß°¡ÇÒ ¼ö ÀÖ´Ù. (ÀÌ ÆÄÀÏÀº ½Ã½ºÅÛ¿¡ µû¶ó Á¶±Ý Ʋ¸± ¼ö ÀÖ´Ù.) 2.2 GASGAS´Â GCC¿Í ÇѽÖÀ¸·Î ¿òÁ÷ÀÌ´Â GNU ¾î¼Àºí·¯ÀÌ´Ù. ¾îµð¼ ãÀ» ¼ö Àִ°¡binutils¶ó À̸§ºÙ¿©Áø ÆÐÅ°Áö ¼Ó¿¡ GCC°¡ ÀÖ´Â °°Àº °÷¿¡¼ ãÀ» ¼ö ÀÖ´Ù. AT&T ¹®¹ýÀº ¹«¾ùÀ» ¸»Çϴ°¡GAS´Â 32ºñÆ® À¯´Ð½º ÄÄÆÄÀÏ·¯¸¦ Á¦°øÇϱâ À§ÇØ Ã¢¾ÈµÇ¾ú±â ¶§¹®¿¡ Ç¥ÁØ AT&T ¹®¹ýÀ» ÀÌ¿ëÇÑ´Ù. AT&T ¹®¹ýÀº ¸¹Àº °ÍµéÀÌ Ç¥ÁØ 680x0 ¾î¼Àºí·¯¿Í ´à¾Ò´Ù. ÀÌ ¹®¹ýÀº "Intel" ¹®¹ý¿¡ ºñÇؼ ÁÁÁöµµ ¾Ê°í, ³ª»ÚÁöµµ ¾Ê´Ù. ´ÜÁö ´Ù¸¦ »ÓÀÌ´Ù. ¿©·¯ºÐµéÀÌ ±×°ÍÀ» »ç¿ëÇغ¸°Ô µÇ¸é, ÀÎÅÚ ¹®¹ý¿¡ ºñÇØ Á»´õ ¸¹Àº ±ÔÄ¢ÀÌ ÀÖÀ½ À» ¾Ë°Ô µÉ °ÍÀÌ´Ù. ¿©·¯ºÐµéÀÌ ÇÁ·Î±×·¥À» º¯È¯ÇÏ´Â °ÍÀ» µ½±â À§ÇÑ ÇÁ·Î±×·¥ÀÌ Á¸ÀçÇÑ´Ù. ÀÌ°ÍÀº TASM ¹®¹ýÀ» AT&T ¹®¹ýÀ¸·Î º¯È¯ÇÏ´Â °ÍÀÌ´Ù. ftp.oulu.fi/pub/msdos/programming/convert/ta2asv08.zipgas.doc À̳ª as.docÆÄÀÏ(GAS¸¦ ãÀº °°Àº °÷ ÁÖÀ§¿¡ ÀÖÀ» °ÍÀÌ´Ù)Àº ±× ¹®¹ýÀ» ±â¼úÇÑ´Ù. ´ÙÀ½ÀÇ FTP µð·ºÅ丮¿¡ ÀÖ´Ù sunsite.unc.edu/pub/linux/GCC/ 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 2.2.3 Á¦ÇÑµÈ 16ºñÆ® ¸ðµåGAS ´Â 32ºñÆ® ¾î¼Àºí·¯À̸ç 32ºñÆ® ÄÄÆÄÀÏ·¯¸¦ Á¦°øÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. GAS ´Â ÇöÀç Á¦ÇÑµÈ 16 ºñÆ®¸ðµå¸¦ Á¦°øÇϴµ¥, ±× 16ºñÆ®¸ðµå´Â ¹Ì¸® ¿¹ºñµÈ, ¸í·É¾îµéÀÇ 32ºñÆ® Á¢µÎ¾î·Î ÀÌ·ç¾îÁ® ÀÖÀ¸¸ç, µû¶ó¼ 32ºñÆ® CPU»óÀÇ 16ºñÆ® ¸ðµå¿¡¼ µ¹¾Æ°¡´Â 32ºñÆ® ¸ðµå¸¦ ¾µ ¼ö ÀÖ´Ù. ¾ç¸ðµå¿¡¼ °øÈ÷, ±×°ÍÀº 16ºñÆ® ·¹Áö½ºÅÍ »ç¿ëÀÌ °¡´ÉÇϳª, 16ºñÆ® ¾îµå·¹½Ì Àº Á¦°øÇÏÁö ¾Ê´Â´Ù. ¸ðµå»çÀ̸¦ ÀüȯÇÏ·Á¸é "code16"°ú "code32"ÀÇ Áö½ÃÀÚ¸¦ »ç¿ëÇ϶ó. ÀζóÀÎ ¾î¼Àºí¸®¿¡¼ÀÇ asm("code16\n") »óÅ´ 32ºñÆ® GCC·Î ÇÏ¿©±Ý ¸®¾ó¸ðµå! ¿¡¼ µ¹¾Æ°¡´Â Äڵ带 ¸¸µé°ÍÀ» Çã¿ëÇÑ´Ù. ¿©·¯ºÐµéÀÌ ÇÊ¿äÇÏ´Ù°í ´À³¤´Ù¸é Ç® 16ºñÆ®¸¦ »ç¿ëÇÔÀ¸·Î½á ¸¶À½²¯ ´©·Áº¸ÀÚ. 2.3 2.3 GASPGASP ´Â GASÀÇ Àü󸮱âÀÌ´Ù. ÀÌ°ÍÀº GAS¿¡ ¸ÅÅ©·Î¿Í ¸î¸î ±¦ÂúÀº ¹®¹ýÀ» Ãß°¡½ÃŲ´Ù. 2.3.1 GASP¸¦ ¾îµð¼ ãÀ» °ÍÀΰ¡³ª´Â Á¤È®ÇÏ°Ô ¸ð¸¥´Ù. GNU »çÀÌÆ® (prep.ai.mit.edu & mirrors)¸¦ º¸±â¹Ù¶õ´Ù. ¾Æ¸¶µµ GAS¿Í °°ÀÌ binutils ÆÐÅ°Áö¿¡ °°ÀÌ ÀÖÀ» °ÍÀÌ´Ù. 2.3.2 GASP´Â ¾î¶°ÇÑ ÀÏÀ» Çϴ°¡³ ¾Æ¹« »ý°¢ÀÌ ¾ø´Ù, ±×·¯³ª ±×°ÍÀº ÀÚüÀÇ texinfo ¹®¼°¡ µû¶ó¿Ã °ÍÀÌ´Ù. ±×·¡¼ ±×°ÍÀ» ÇÁ¸°Æ® Çؼ º¸¶ó, ¾Æ´Ï¸é .info ÆÄÀϵéÀ» ºê¶ó¿ìÁîÇϱ⠹ٶõ´Ù. ¸ÅÅ©·Î ¾î¼Àºí·¯ÀÇ ±ÔÄ¢À» ³ª¿¡°Ô º¸³»ÁÖ¸é ÁÁ°Ú´Ù. 2.4 2.4 AS86AS86Àº Bruce Evans' C ÄÄÆÄÀÏ·¯ ºÎºÐÁßÀÇ 16ºñÆ®, 32ºñÆ®¸¦ ´Ù °°ÀÌ Á¦°øÇÏ´Â 80x86 ¾î¼Àºí·¯ÀÌ´Ù. ±×°ÍÀº ÃÖ±ÙÀÇ ÀÎÅÚ ¹®¹ýÀ» °¡Áö°í ÀÖÀ¸¸ç as¿Í Á¶±Ý ¾îµå·¹½Ì ¸ðµå¸¦ ´Þ¸®ÇÑ´Ù. 2.4.1 AS86À» ¾îµð¼ ¾òÀ» ¼ö Àִ°¡¿ÏÀüÈ÷ ½Ã´ë¿¡ µÚ¶³¾îÁø AS86Àº HJLu¿¡ ÀÇÇØ ¹èÆ÷µÇ¸ç ¹Ù·Î ¸®´ª½º Ä¿³ÎÀ» ÄÄ ÆÄÀÏ ÇÒ ¼ö ÀÖ´Ù. ÀÌ ÆÐÅ°Áö´Â bin86(ÇöÀç¹öÁ¯ 0.3)·Î µÇ¾î ÀÖÀ¸¸ç Linux GCC »çÀÌÆ®¿¡¼ ¹ß°ßÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ³»°¡ º¸±â¿¡´Â ¸®´ª½º ÄÄÆÄÀϸµÀ» Á¦¿ÜÇÏ°í´Â ¾Æ¹«°÷¿¡µµ »ç¿ëµÇÁö ¾Ê°í ÀÖ´Ù. ÀÌ ¹öÁ¯Àº ¿À·ÎÁö ÇØÅ·µÈ ¹Ì´Ð½º ¿ÀºêÁ§Æ® ÆÄÀÏ Æ÷¸äÀ» Á¦°øÇϸç 32ºñÆ®¸ðµå¿¡¼ ´Â Á¶±ÝÀÇ ¹ö±×°¡ Àִµ¥, ´ÜÁö ¸®´ª½º¸¦ ÄÄÆÄÀϸ¸ Çϱâ À§Çؼ¶ó¸é ±¦ÂúÀ¸¸®¶ó. °¡Àå ÃÖ±ÙÀÇ ¹öÁ¯Àº FreeBSD ¹èÆ÷ÆÇ°ú °°ÀÌ Ãâ½ÃµÇ¾ú´Ù. ³ª´Â ±×°ÍÀ» ´ÙÀ½¿¡¼ ±¸Çß´Ù. 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 ÇÁ·ÎÁ§Æ®¿¡ ÀÇÇØ ´ÙÀ½¿¡ ¹ßÇ¥µÇ¾ú´Ù. www.eleves.ens.fr:8080/home/rideau/Tunes/ º¸Á¶ÆäÀÌÁö´Â files/tunes.0.0.0.25.src.tgz ÀÌ´Ù. Ç®¸° ¼ºêµð·ºÅ丮ÀÇ LLL/i386/ ±× ÆÐÄ¡´Â ¶ÇÇÑ ¹Ù·Î ´ÙÀ½¿¡¼ ãÀ» ¼ö ÀÖ´Ù. www.eleves.ens.fr:8080/home/rideau/files/as86.bcc.patch.gz Bruce Evans ´Â ÀÌ ÆÐÄ¡¸¦ ¹Þ¾Æµé¿´´Âµ¥, °¡Àå ÃÖ±ÙÀÇ bcc ¹öÁ¯Àº ÀÌ ÆÐÄ¡ ¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. µµ½º »ç¿ëÀÚ¸¦ À§ÇÑ ÁÖÀÇ»çÇ×:
docµéÀ» ¾îµð¼ ãÀ» ¼ö Àִ°¡docµéÀº bcc ÆÐÅ°Áö¿¡ Æ÷ÇÔÀÌ µÇ¾î ÀÖ´Ù. ¸ÇÆäÀÌÁöµµ ¶ÇÇÑ FreeBSD »çÀÌÆ®ÀÇ ¾î ´À °÷ÀÌ´øÁö ±¸ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀǽÉÀÌ °£´Ù¸é, ±×µé ¼Ò½º¿¡ °¡²û ±¦ÂúÀº docµéÀÌ ÀÖ´Ù: ±×¸® Àß ¼³¸íÀÌ µÈ °ÍÀº ¾Æ´ÏÁö¸¸, ÇÁ·Î±×·¡¹Ö ½ºÅ¸ÀÏÀº ±ú²ýÇÏ°Ô µÇ¾î ÀÖ´Ù. °ü½ÉÀÌ ÀÖ´Ù¸é Tunes 0.0.0.25 ¿¡¼ ¾î¶»°Ô as86ÀÌ »ç¿ëµÇ¾ú´Â Áö¸¦ »ìÆ캸¶ó. ¾î¶»°Ô ¾î¼Àºí·¯¸¦ ºÒ·¯¿À´Â°¡ ?bcc¸¦ »ç¿ëÇؼ .s ¾î¼Àºí¸® ¼Ò½º ÆÄÀÏÀ» GNU a.out .o ¿ÀºêÁ§Æ® ÆÄÀÏ, .l ¸®½ºÆà ÆÄÀÏ·Î º¯È¯ÇÏ´Â GNU ¸ÞÀÌÅ© ÆÄÀÏÀÇ ¿¹¸¦ Çϳª µé¾îº¸ÀÚ. %.o %.l: %.s bcc -3 -G -c -A-d -A-l -A$*.l -o $*.o $<¾î¶°ÇÑ ¸®½ºÆà ÆÄÀϵµ ¹ºÇÏÁö ¾Ê´Â´Ù¸é "%.l", "-A-l", "-A$*.l"À» ¾ø¾Ö¶ó. GNU a.out ÀÌ¿ÜÀÇ °ÍÀ» ¾ò°íÀÚ ÇÑ´Ù¸é bcc docÁß¿¡¼ ´Ù¸¥ Á¦°øÇÏ´Â Æ÷¸Ë¿¡ ´ëÇÑ ±ÛÀ» º¸°Å³ª GNU binutils ÆÐÅ°ÁöÀÇ objcopy À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ »õ·Î¿î ¹öÁ¯À¸·Î ¸®´ª½º¸¦ ÄÄÆÄÀÏ ÇÒ¼ö ¾ø´Ù¸é ¾î¶»°Ô ÇØ¾ß Çϴ°¡?¸®´©½º´Â ¸ÞÀÏ·Î ¿Õ¼ºÇÏ°Ô È°µ¿ÇÏ°í ÀÖ´Ù. ¸®´ª½º a.out as86À¸·Î ¸®´ª½º¸¦ ÄÄ ÆÄÀÏÇÏ´Â ³ªÀÇ ÆÐÄ¡µµ ±×°ÍÀ» ¸¸µéÁö ¸øÇÑ´Ù. ÀÌÁ¦, À̰͵éÀÌ ¼º°øÇÏÁö ¸øÇÑ´Ù¸é: bin86 ÆäÅ°Áö¾ÈÀÇ /usr/bin¿¡ ÀÖ´Â ¿©·¯ºÐµéÀÇ as86 À» °¡Áö°í ÀÖ°í, ´õ ÁÁÀº as86À» /usr/local/libexec/i386/bcc/as¿¡ °¡Á®´Ù ³õ¾Æ¶ó. ¾Æ¸¶µµ ÀÌ "ÁÁÀº" as86À» ºÎ¸¦ ÇÊ¿ä°¡ ´õÀÌ»ó ¾øÀ» °ÍÀÌ´Ù. 2.5 ´Ù¸¥ ¾î¼Àºí·¯µéWin32Forth ¾î¼Àºí·¯Win32Forth ´Â Win32s, Win95, Win/NT¿¡¼ ÈǸ¢ÇÏ°Ô µ¹¾Æ°¡´Â ÇÁ¸® 32ºñÆ® FORTH ½Ã½ºÅÛÀÌ´Ù. ±×°ÍÀº ¾î¼Àºí·¯¿¡ ÅëÇÕµÈ ÇÁ¸® 32ºñÆ® ¾î¼Àºí·¯(Á¢µÎ»ç ¶Ç´Â Á¢¹Ì»ç ¹®¹ý)¸¦ Æ÷ ÇÔÇÏ°í ÀÖ´Ù. ¸ÅÅ©·Î 󸮴 »ç·Á±íÀº FORTH ¾ð¾îÀÇ full power¿¡ ÀÇÇØ Ã³¸®µÈ´Ù. ±×·¯³ª ´ÜÁö ÀÔÃâ·ÂÀº Win32For ±×°Í ÀÚü¸¦ ÀÌ¿ëÇÒ »ÓÀÌ´Ù. ´ÙÀ½¿¡¼ ãÀ» ¼ö ÀÖ´Ù. ftp.forth.org/pub/Forth/win32for/ NASM³×Æ®¿öÅ© »ó¿¡¼ ¹ú¾îÁö°í ÀÖ´Â ¾î¼Àºí·¯ ÇÁ·ÎÁ§Æ®´Â ¾ÆÁ÷ ´Ù¸¥ ¾î¼Àºí·¯¸¦ ¸¸µé±â À§ÇØ ³ë·ÂÇÏ°í ÀÖ´Â ÁßÀÌ´Ù. ÀÌ°ÍÀº C¿¡¼ ¾²¿©Á³´Âµ¥, ¸ðµç ¾Ë·ÁÁø ¹®¹ýµé°ú ¿ÀºêÁ§Æ® Æ÷¸ËµéÀ» Á¦°øÇÏ´Â µ¥ ÃæºÐÇÑ ¸ðµâ·¯°¡ µÉ°ÍÀÌ´Ù. ÇöÀç ¹öÁ¯Àº Á¶±ÝÀÇ ¸Å¿ì °£´ÜÇÑ ¹®¹ýµé°ú ÆòÀÌÇÑ ¹ÙÀ̳ʸ® Ãâ·Â¿¡ À־ Àßµ¹¾Æ°£´Ù; ¸ÅÅ©·Î ÇÁ·Î¼¼½Ì¿¡´Â Èï¹Ì°¡ ¾ø¾îº¸ÀδÙ. È®½ÇÈ÷ NASMÀº ÀÌ ÇÏ¿ìÅõ°¡ ¾÷µ¥ÀÌÆ® µÇ´Â °Í º¸´Ù ºü¸£°Ô ¹ßÀüÇÏ°í ÀÖ´Ù; ±×·¸´Ù°í NASMÀÌ ÇöÀç ¿ä±¸µÇ´Â ¸ðµç Ư¡µéÀ» °¡Áö°í ÀÖÀ» °ÍÀ̶ó°í ±â´ëÇÏ Áö´Â ¸»¶ó. Àû¾îµµ ¿©·¯ºÐµéÀÌ ±×°ÍÀÇ °èȹÀÌÇàÀ» µµ¿ï Áغñ¾øÀÌ´Â... www.dcs.warwick.ac.uk/~jules/nasm1.html TunesTunes OS ÇÁ·ÎÁ§Æ®´Â ±×µé ÀÚ½ÅÀÇ ¾î¼Àºí·¯¸¦ Scheme ¾ð¾î¸¦ »ç¿ëÇÔÀ¸·Î½á Àüü °³¹ß ¼öÇàÀÇ ÀϺκÐÀ¸·Î °³¹ßÇÏ°í ÀÖ´Ù. ±×°ÍÀº ¾ÆÁ÷ Àß µ¹¾Æ°¡Áö ¾Ê°í ÀÖÀ¸¸ç µµ¿òÀ» ÇÊ¿ä·Î ÇÏ°í ÀÖ´Ù. ÀÌ ¾î¼Àºí·¯´Â ½Éº¼¸¯ ¹®¹ý Æ®¸®¸¦ ó¸®ÇÏ´Â µ¥, ÀÌ°ÍÀº ¾î¼Àºí¸® ¹®¹ýÀÇ ±âÃÊ·Î µ¿µîÇÏ°Ô ¼ºñ½º µÉ ¼ö ÀÖÀ¸¸ç, µð½º¾î¼Àºí·¯, °øÅë ¾î¼Àºí·¯/ÄÄÆÄÀÏ·¯ back-end µîµîÀÇ, ±×¸®°í ÀüÁ¤ÇÑ ¾ð¾îÀÎ SchemeÀÇ Ç®ÆÄ¿ö´Â ¸ÅÅ©·Îó¸®/¸ÞÆ®·Î󸮿¡ ÀÖ¾î¼ Å¸ÀÇ ÃßÁ¾À» ºÒÇãÇÑ´Ù. www.eleves.ens.fr:8080/home/rideau/Tunes/ ÇÁ¸®°¡ ¾Æ´Ï°Å³ª 32ºñÆ®°¡ ¾Æ´Ñ x86 ¾î¼Àºí·¯µé¿©·¯ºÐµéÀº x86 ¾î¼Àºí¸® ÇÁ·Î±×·¡¹ÖÀÇ ±âº»À¸·Î¼ ±×°Íµé¿¡ ´ëÇØ Á»´õ ã¾Æ º¼ ¼ö ÀÖ´Ù. Raymond MoonÀÇ comp.lang.asm.x86À» À§ÇÑ FAQ ¸¦ ã¾Æº¸±â ¹Ù¶õ ´Ù. www2.dgsys.com/~raymoon/faq/asmfaq.zip 3. META ÇÁ·Î±×·¡¹Ö/ ¸ÅÅ©·Î 󸮿©·¯ºÐµéÀº ÀÌ·¯ÇÑ ÀÛ¾÷À» À§Çؼ Àû´çÇÑ ÅøÀ» »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, ±×°ÍÀÌ Àû´çÇÏÁö ¾Ê´Ù¸é ¾î¼Àºí¸®¸¦ ¼±ÅÃÇÒ ¼ö ¾ø´Ù; C, OCAML, perl, Scheme °¡ ´ç½ÅÀÇ ÇÁ·Î±×·¡¹ÖÀÇ ÃÖ¼±ÀÇ ¼±ÅÃÀÌ µÉ °ÍÀÌ´Ù. ±×·¯³ª, ÀÌ·¯ÇÑ ÅøµéÀÌ ±â°è»ó¿¡¼ ÃæºÐÈ÷ ¾µ¸¸ÇÑ Á¦¾î±â´ÉÀ» ÁÖÁö ¾Ê´Â´Ù¸é, ¾î¼Àºí¸®´Â À¯¿ëÇϰųª ÇÊ¿äÇÒ °ÍÀÌ´Ù. ´Ù¸¥ °æ¿ì¿¡, ¸¸ÀÏ ¿©·¯ºÐµéÀÌ ¾ÈÀüÇÑ ÇÁ·Î±×·¡¹Ö, Æí¾ÈÇÑ ¼öÁ¤ µîµîÀ» Çã¶ôÇÏ´Â ÀζóÀÎ È®Àå¿¡ ÀÇÇØ ÀÚµ¿ÀûÀ¸·Î ½Ã½ºÅÛÀÇ ¸ÅÅ©·Îó¸®¿Í ¸ÞŸÇÁ·Î±×·¡¹ÖÀ» ÀÌÇØÇÏ °íÀÚ ÇÑ´Ù¸é ±×°ÍÀº Çѹø Á¤ÀǵǴ Àç±ÍÆÐÅÏÀ» Çã¶ôÇÒ °ÍÀ̸ç, ´ÙÁß ½Ã°£À» Àç»ç¿ë ÇÒ °ÍÀÌ´Ù. "ÆòÀÌÇÑ" ¾î¼Àºí·¯´Â Á¾Á¾ ÀÛÀº ·çƾÀ» C·Î ¸µÅ©½Ãų ¶§ Á¶Â÷ ÃæºÐÈ÷ ¾ÊÀº¶§°¡ ÀÖ´Ù. 3.1 À§¿¡¼ ÅëÇÕµÈ °ÍÀ̶õ ¹«¾ùÀ» ¶æÇϴ°¡GCCGCC ¿¡¼ ÀζóÀÎ ¾î¼Àºí¸® Äڵ带 »ç¿ëÇÑ´Ù¸é ±× ¼Ó¿¡¼ÀÇ ·¹Áö½ºÅÍ ±ÔÄ¢À» ²Ä²Ä ÇÏ°Ô »ìÆ캸¾Æ¾ß ÇÑ´Ù. ÃÖÀûȽÇÇàÀÚ´Â Ç×»ó ±×°Í¿¡ ´ëÇØ ¾Ë°í ÀÖÀ¸¹Ç·Î, ÀζóÀÎ ¾î¼Àºí¸® ÄÚµå´Â Á¤È®ÇÏÁö ¾Ê´Â Äڵ带 ¸¸µé¾î ³½´Ù. ±×·¯¸é, ¿©·¯ºÐµéÀÇ ¾î¼Àºí¸®¸¦ CPP ¸ÅÅ©·Î¿¡ ³õÀ» ¼ö ÀÖÀ¸¸ç, ¸ðµç »ç¶÷µéµµ ±×°ÍÀ» C ÇÔ¼ö/¸ÅÅ©·Î·Î »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀζóÀÎ ÇÔ¼ö´Â ¸ÅÅ©·Î¿Í ¸Å¿ì ¸¹ÀÌ ºñ½ÁÇѵ¥, ±×°ÍÀº °¡²û »ç¿ëÀ» Çϱâ À§ÇØ ±ú²ýÇÏ°Ô Ã»¼ÒµÉ ¶§°¡ ÀÖ´Ù. ±×·¯ÇÑ °æ¿ì¿¡ Äڵ尡 º¹»ç°¡ µÉ ¼ö ÀÖÀ¸´Ï ÁÖÀÇÇØ¾ß ÇÑ´Ù. ±×·¡¼ ·ÎÄà ¶óº§("1:" ½ºÅ¸ÀÏÀÇ)¿¡¼¸¸Àº ¾î¼Àºí¸® Äڵ忡¼ Á¤ÀǵǾî ÀÖ¾î¾ß ÇÑ´Ù. ±×·¸´Ù ÇÒÁö¶óµµ, ¸ÅÅ©·Î´Â ·ÎÄÃÀÌ ¾Æ´Ñ Á¤ÀǶóº§ÀÇ À̸§µµ Çã¿ëÀ» ÇÑ´Ù. ¶ÇÇÑ, ¿©·¯ºÐµéÀÇ Äڵ峪 GCCÀÇ Á¶±ÝÀÇ ¹ö±×´Â ·¹Áö½ºÅÍ ±ÔÁ¤ÀÌ ¾Æ¸¶µµ ¼±¾ðµÇ Áö ¾Ê¾ÒÀ» ¶§, ÀζóÀÎ ÇÔ¼ö¸¦ ¾î¼Àºí¸® ÄÚµå·Î »ç¿ëÇÒ ¶§, ³ªÅ¸³¯ ¼ö ÀÖÀ» °Í À̸ç GCC¸¦ È¥µ¿¿¡ ºü¶ß¸°´Ù. ¸¶Áö¸·À¸·Î, C ¾ð¾î´Â ±×Â÷ü°¡ ¾î¼Àºí¸® ÇÁ·Î±×·¡¹Ö¿¡ ÀÖ¾î¼ Á¦¹ý ±¦ÂúÀº Ãß»óÈ ¶ó°í ´ë¿ì¹Þ°í ÀÖ´Ù. ¾î¼Àºí¸µÀÇ °íÃæ¿¡¼ ¸¹Àº ºÎºÐÀ» µé ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. ±×¸®°í ÇÔ¼ö·Î ÀÎÀÚ¸¦ ·¹Áö½ºÅ͸¦ ÅëÇØ ³Ñ°ÜÁÖ´Â ¸î¸î ÃÖÀûÈ´Â ¾î¼Àºí¸®¿¡¼ ±× ÇÔ¼ö¸¦ ºÎ¸¦ ¶§ ºÎÀû´ç ÇÒ ¼öµµ ÀÖ´Ù. Àû¾îµµ ¿©·¯ºÐµéÀÌ ¾îÆ®¸®º× asmlinkage ¿¡°Ô ±×°ÍµéÀ» ÁÖ¾î¾ß ÇÑ´Ù. ¸®´ª½º Ä¿³Î ¼Ò½ºÀÇ ºÎºÐÀ» Âü°í ÇÒ ¼ö ÀÖ´Ù. GASGAS´Â Àý´ë·Î ¸ÅÅ©·Î ±â´ÉÀ» Æ÷ÇÔÇÏ°í ÀÖÁö ¾Ê´Ù. ±×·¯³ª, GCC ¿Í °Ç³×Áö´Â .S ÆÄÀϵéÀº ±×°ÍµéÀÌ GAS¿¡°Ô °Ç³×Áö±â Àü¿¡ CPP¸¦ Åë ÇÒ ¼öµµ ÀÖ´Ù. .s ÆÄÀÏÀº Çϳª¸¦ »ý¼º½ÃÅ°°í ¹Ù·Î GAS¿¡°Ô·Î °Ç³×Áø´Ù. ´Ù½ÃÇѹø ¸»ÇÏÁö¸¸, ¿¹¸¦ º¼·Á¸é ¸®´ª½º ¼Ò½ºµéÀ» º¸¶ó. GASPº¸ÅëÀÇ °ÅÀÇ ¸ðµç ¸ÅÅ©·Î¾î¼Àºí¸®¸¦ GAS¿¡°Ô º¸ÅÄ´Ù. texinfo doc¸¦ º¸¶ó. AS86ÀÌ°ÍÀº °£´ÜÇÑ ¸ÅÅ©·Î¸¦ Á¦°øÇÑ´Ù. ³ª´Â docµéÀ» ¸øã¾Ò´Ù. ÀÌ ¼Ò½ºµéÀº ¾ÆÁÖ °£°áÇÏ°í ±ò²ûÇÏ´Ù. ¿©·¯ºÐµéÀÌ Èï¹Ì¸¦ °¡Áø´Ù¸é ±×°ÍµéÀ» ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. Ãʺ¸ÀûÀÎ °Íº¸´Ù ´õ ¸¹ÀÌ ¾Ë°í ½Í´Ù¸é ¿ÜºÎÇÊÅ͸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. (¾Æ·¡ÀÇ 3.2 ºÎºÐÀ» º¸¶ó.) ´Ù¸¥ ¾î¼Àºí·¯µéWin32FORTH: CODE ¿Í END-CODE´Â Çؼ³¸ðµå·ÎºÎÅÍ ¼±ÅÃÇÒ ¼ö ¾ø´Â ¸ÅÅ©·ÎÀÌ´Ù. ±×·¡¼ ¾î¼Àºí¸µ µ¿¾ÈÀº FORTH ´Ü¾îÀÇ ¸ðµç °Íµé¿¡ Á¢±ÙÀ» ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. NASM: ¾ÆÁ÷ ¸ÅÅ©·Î¸¦ Á¦°øÇÏÁö ¾Ê´Â´Ù. ¾Æ·¡ÀÇ ¿ÜºÎ ÇÊÅÍ ºÎºÐÀ» º¸¶ó. TUNES: À̰͵µ ¾ÆÁ÷ Á¦°øÇÏÁö´Â ¾Ê´Â´Ù. ±×·¯³ª Scheme¾ð¾î´Â ±âºÐ³»Å°´Â µ¥·ÎÀÇ ¸ÞŸ ÇÁ·Î±×·¡¹ÖÀ» Çã¿ëÇÏ´Â ÁøÁ¤ÇÑ °í±Þ¾ð¾îÀÌ´Ù. ¿ÜºÎ ÇÊÅ;î¼Àºí·¯¿¡¼ ¾î¶² ¸ÅÅ©·Îµµ Á¦°øÀ» ÇÏ´øÁö, ¶Ç´Â ¿©·¯ºÐµéÀÌ ¾î¶² ¾ð¾î¸¦ »ç¿ëÇÑ´Ù°í ÇÏ´õ¶óµµ(C Á¶Â÷!) ±× ¾ð¾î´Â Ç¥ÇöÇÏ´Â µ¥ ÃæºÐÄ¡ ¾ÊÀ» °ÍÀÌ´Ù. ¿©·¯ºÐµéÀº Makefile ±ÔÄ¢À¸·Î ´ÙÀ½°ú °°ÀÌ ÆÄÀÏÀ» ¿ÜºÎÇÊÅ͸¦ ÅëÇØ °Ç³×ÁÙ ¼ö ÀÖ´Ù. %.s: %.S other_dependencies $(FILTER) $(FILTER_OPTIONS) < $< > $@ CPPCPP ´Â Ç¥Çö·Â¿¡ ÀÖ¾î¼ Á» ¾àÇÏÁö¸¸ ½¬¿î °Íµé¿¡´Â ÃæºÐÇÏ´Ù. ±×°ÍÀÌ Ç¥ÁØÀ̶ó¸é GCC¿¡ ÀÇÇØ ºÒ¸®¿ö Áú °ÍÀÌ´Ù. CPPÀÇ Á¦ÇÑµÈ Á¡¿¡¼ º¸µíÀÌ, ¿ÀºêÁ§Æ®¸¦ ¼±¾ð ÇÒ ¼ö ¾øÀ¸¸ç, µû¶ó¼ Æı«ÀÚ (destructors)´Â ÀÚµ¿ÀûÀ¸·Î ¼±¾ðºí·°ÀÇ ¸¶Áö¸·¿¡¼ ÄݵȴÙ. ±×¸®°í µ¥ÀÌŸ³ª Äڵ带 ó¸®Çϱâ À§ÇØ ±×°ÍÀ» °øÅë ¼±¾ðÀ» ÇÒ ¼ö ¾ø´Ù. CPP´Â C ÄÄÆÄÀÏ·¯¿¡ µû¶ó¿Â´Ù. GCC´Â ¿©·¯ºÐµéÀÌ °¡Á®¿Ã ¼ö ÀÖ´Â ÀÚÀ¯·Î¿î C ÄÄÆÄÀÏ·¯ÀÌ´Ù. M4M4´Â ¸ÅÅ©·Î󸮿¡ ÀÖ¾î¼ Å¹¿ùÇÑ ´É·ÂÀ» º¸¿©ÁØ´Ù. Àç±ÍÀû Ç¥Çö, Áú¼Á¤¿¬ÇÑ ±ÔÄ¢µî¿¡ ÀÖ¾î¼ ±¦Âú¾Æ º¸ÀδÙ. CPP°¡ ÇÒ ¼ö ¾ø´Â ¸ðµç °ÍµéÀ» ±×°ÍÀ¸·Î ÇÒ ¼ö ÀÖ´Ù. macro4th/This4th ¸¦ ¾Æ·¡¿¡¼ º¸¶ó. ftp.forth.org/pub/Forth/ in Reviewed/ ANS/ (?), ¶Ç´Â Tunes 0.0.0.25 ¼Ò½º¸¦ m4¸¦ »ç¿ëÇÏ´Â Áøº¸ÇÑ ¸ÅÅ©·Î ó¸®ÀÇ ¿¹Á¦·Î¼ º¸´Â °Íµµ ±¦ÂúÀ» °ÍÀÌ´Ù. m4ÀÇ ¶óÀÌÆ®¹öÁ¯Àº GNU m4 1.4 (ÀÌ»ó)À¸·Î ±¸ÇÒ ¼ö ÀÖ´Ù. ÇÊÅ͸¦ ÅëÇÑ ¸ÅÅ©·Î 󸮿©·¯ºÐµéÀº °£´ÜÇÑ ¸ÅÅ©·Î È®Àå ÇÊÅ͸¦ ¾µ ¼ö ÀÖ´Ù. perl, awk, sed µîÀ» »ç¿ëÇÔÀ¸·Î½á °¡´ÉÇÏ´Ù. ÀÌ·¸°Ô ÇÏ´Â °ÍÀÌ ºü¸£¸ç, °ÅÀÇ ¸ðµç °ÍÀ» Á¦¾î ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¸ÞŸ ÇÁ·Î±×·¡¹Ö[»ý·«] 4. ÄÁº¥¼Ç ºÎ¸£±â4.1 4.1 LinuxGCC·Î ¸µÅ©Çϱâ32ºñÆ® ÀÎÀÚ´Â 32ºñÆ® near¸®ÅÏ ¾îµå·¹½ºÀ§·Î ½ºÅÃ»ó¿¡ Çª½¬µÈ´Ù. %ebp, %esi, %edi, %ebx °¡ ÀúÀåµÈ´Ù. %eax¿¡ °á°ú°¡ ´ã±â°Å³ª %edx:%eax¿¡ 64ºñÆ® °á°ú°¡ ´ã±ä´Ù. GCC´Â ÀúÀåµÈ ·¹Áö½ºÅÍ¿¡ ÀÇÇØ È£ÃâµÇ´Â ÄÁº¥¼ÇÀ» º¯°æÇÒ ¼ö ÀÖ´Â ¿É¼ÇÀ» °¡Áö°í ÀÖÀ¸¸ç, ·¹Áö½ºÅÍ¿¡ ÀÎÀÚ¸¦ °¡Áö°í ÀÖÀ¸³ª FPU¸¦ »ý°¢ÇÏÁö ¾Ê´Â´Ù. i386 ÀÎÆ÷ ÆäÀÌÁö¸¦ üũÇ϶ó. GCC°¡ ÀÌ·¯ÇÑ Ç¥ÁØ ÄÁº¥¼ÇÀ» Á¦°øÇÒ·Á¸é ÇÔ¼ö¸¦ À§ÇØ asmlinkage attribute¸¦ ¼±¾ðÇØ¾ß ÇÑ´Ù. (³ª´Â ¾î¶»°Ô ±×°ÍÀÌ ÄÁº¥¼ÇÀ» ºÒ·¯¼ º¯°æÇÏ´Â Áö¸¦ ¾ËÁö ¸øÇÑ´Ù.) ELF vs a.out ¹®Á¦µé¾î¶² 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 ¸ñÀûÆÄÀÏ·Î ¸¸µé¼ö ÀÖÀ¸¸ç ¹Ý´ëÀÇ °æ¿ìµµ °¡²û °¡´É ÇÒ °ÍÀÌ´Ù. Á÷Á¢ÀûÀÎ ¸®´ª½º ½Ã½ºÅÛ ÄÝÀÌ°ÍÀº Àç¸í¸íÇÒ ¼ö ¾ø´Ù. ¿Ö³ÄÇϸé ÀÌ°ÍÀº ¹Ù²î¸é ȣȯ¼ºÀÌ ¾ø¾îÁö±â ¶§¹®ÀÌ´Ù. ±×¸®°í ÀÌ°ÍÀº libcÀÇ °íÁ¤ÀûÀÎ °Íµé°ú È®ÀåµÈ °ÍµéÀ» ¹æÇØÇÑ´Ù. Á¤¼®À¸·Î ÇÏÀÚ¸é, ¸®´ª½º ½Ã½ºÅÛ ¼ºñ½º ÄÝÀ» Àç¸í¸íÇÏ´Â °ÍÀº libc¸¦ ÅëÇؼ ÇÑ´Ù. ÀÌÁ¦, libc·Î ¸µÅ©¸¦ ½ÃÅ°´Â °ÍÀ» ¿øÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ¾Æ·¡¿¡¼ linux-eforth- 1.0c.tgz À» º¸¶ó. ftp.forth.org/pub/Forth/Linux/ ¸®´ª½º ¼Ò½º°¡ µû¶ó¿Ã °ÍÀÌ´Ù. ¾î¶»°Ô ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇÒ °ÍÀÎÁö¸¦ ¼³¸íÇÏ´Â asm/unistd.h Çì´õÆÄÀϵµ µû¶ó¿Â´Ù. ±âº»ÀûÀ¸·Î ¿©·¯ºÐµéÀº %eax¿¡ __NR_syscallname ¹øÈ£¸¦ ³Ö°í, ÆĶó¸ÞŸ¸¦ %ebx, %ecx, %edx, %esi, %edi¿¡ °¢°¢ ³Ö°í int $0x80À» »ç¿ë ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. °á°ú´Â %eax¿¡ ¸®Åϵǰí, ¿¡·¯½Ã¿¡´Â libc°¡ errno¸¦ ¼¼ÆÃÇÏ´Â °Í¿¡ ÇØ´çÇÏ´Â °á°ú¸¦ À½¼ö·Î %eax¿¡ ³õ´Â´Ù. »ç¿ëÀÚ ½ºÅØÀº °Ç´õ¸®Áö ¾Ê´Âµ¥, ½Ã½ºÅÛ ÄÝÀÌ ºÒ¸®¿ö Áö´Â µ¿¾È º°´Ù´Â °ÍÀÌ ÇÊ ¿äÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. 4.2 µµ½ºÃÖ±ÙÀÇ µµ½º ÀͽºÅÙ´õµé¿¡´Â µµ½º¼ºñ½º¸¦ À§ÇÑ ÀÎÅÍÆäÀ̽º°¡ µû¶ó¿Â´Ù. ±×¿¡ ´ëÇÑ docÆÄÀϵéÀ» Àо¶ó. º¸ÅëÀº int 0x21À» Èä³»³»´Âµ¥, µû¶ó¼ ¸®¾ó¸ðµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô µÈ´Ù. (³ª´Â ±×°ÍµéÀÌ, ÇÊ¿äÇÒ ¶§ 32ºñÆ® ÀÛµ¿ÀÚ¸¦ »ç¿ëÇÏ¿© 16ºñÆ® µµ½º ¼ºñ½º¸¦ È£ÃâÇÔÀ¸·Î½á ÀÛ¾÷À» ÇÒ ¼ö ÀÖÀ¸¸®¶ó°í´Â »ý°¢Ä¡ ¾Ê´Â´Ù.) DPMI¿¡ °üÇÑ docÀº ´ÙÀ½¿¡¼ ãÀ» ¼ö ÀÖ´Ù. ftp.oulu.fi/pub/msdos/programming/ DJGPP ¿¡´Â ÀÚüÀÇ (Á¦ÇѵÈ) ±³Ã¼µÈ libc°¡ µû¶ó¿Â´Ù. ÀÌ°ÍÀº ¸®´ª½º¿¡¼ µµ½º·Î Å©·Î½ºÄÄÆÄÀÏÀÌ °¡´ÉÇÏ´Ù. ±×·¯³ª ÇöÀç ÀÖ´Â ÆÐÄ¡´Â a.out GCC¿ëÀ̸ç ÃÖ±ÙÀÇ ELF GCC´Â ÆÐÄ¡°¡ ÇÊ¿ä¾øÀ» °ÍÀÌ´Ù. ¸¸ÀÏ ±×°ÍµéÀÌ »õ·Î¿î ÆÐÄ¡¸¦ ÇÊ¿ä·Î ÇÑ´Ù¸é ³¸ð¸£°Ú´Ù.. 4.3 ¿©·¯ºÐµéÀÇ OS[¾î¼Àºí¸® ÇÁ·Î±×·¡¸ÓµéÀÌ ¸¹ÀÌ ±×°Í¿¡ ´ëÇØ À̾߱â ÇÏ°í ÀÖ´Â °ÍÀÌ´Ù.] ºÎÆ® ·Î´õ ÄÚµå¿Í 32ºñÆ® ¸ðµå·Î µé¾î°¡±âÇÁ·ÎÅؼÇÀÇ ±âÃÊÀÎÅÍ·´Æ® ´Ù·ç±â16ºñÆ® ½Ã½ºÅÛ ¼ºñ½º¸¦ »ç¿ëÇÏ´Â V86/R86 ¸ðµåÀ̰͵鿡 ´ëÇÑ Á¤º¸¸¦ ¾îµð¼ ¾òÀ» °ÍÀΰ¡[´Ù¸¥ ¹®¼¿¡ À̺κе鿡 ´ëÇÑ ¾È³»Ç¥½Ã¸¦ º¸ÅÂÁֱ⠹ٶõ´Ù] Á¤º¸ÀÇ Áß¿äÇÑ ¼Ò½º´Â OS¿¡ Á¸ÀçÇÏ°í ÀÖ´Ù. ¸¹Àº ¾È³»Ç¥½ÃµéÀÌ ¾Æ·¡ÀÇ WWW ÆäÀÌÁö¿¡ ÀÖ´Ù. www.eleves.ens.fr:8080/home/rideau/Tunes/Review/OSes.html 5. ÇØ¾ß ÇÒÀÏ
|
You recoil from the crude; you tend naturally toward the exquisite. |