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

You are not allowed to 'backlinks'


¾î ¼À ºí ¸® H O W T O V 0 . 3 C

¾î ¼À ºí ¸® 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 GAS

GAS´Â 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 GASP

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

2.3.1 GASP¸¦ ¾îµð¼­ ãÀ» °ÍÀΰ¡

³ª´Â Á¤È®ÇÏ°Ô ¸ð¸¥´Ù. GNU »çÀÌÆ® (prep.ai.mit.edu & mirrors)¸¦ º¸±â¹Ù¶õ´Ù. ¾Æ¸¶µµ GAS¿Í °°ÀÌ binutils ÆÐÅ°Áö¿¡ °°ÀÌ ÀÖÀ» °ÍÀÌ´Ù.

2.3.2 GASP´Â ¾î¶°ÇÑ ÀÏÀ» Çϴ°¡

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

2.4 2.4 AS86

AS86Àº 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 ¹öÁ¯Àº ÀÌ ÆÐÄ¡ ¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù. µµ½º »ç¿ëÀÚ¸¦ À§ÇÑ ÁÖÀÇ»çÇ×:

  • µµ½º¿¡¼­ ÄÄÆÄÀÏ ÇÏ·Á¸é POSIX_HEADERS_MISSING ¸¦ ¸ÕÀú Á¤ÀÇÇ϶ó.
  • bcc/as¿¡ À־ DJGPP¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é mops.cÀÇ mcall() ÇÔ¼ö¿¡¼­ "far"¶ó°í À̸§ ºÙ¿©Áø °ÍÀ» °ªÀ» ¹Ù²ã¾ß ÇÑ´Ù. ¿Ö³ÄÇÏ¸é ¸î¸î µµ½º ÄÄÆÄÀÏ·¯¿¡¼­´Â "far"´Â ¿¹¾à¾îÀ̱⠶§¹®ÀÌ´Ù. bcc/ld µð·ºÅ丮·ÎºÎÅÍ typeconf.obj·Î ¸µÅ©¸¦ ½ÃÄÑ¾ß ÇÑ´Ù´Â °ÍÀ» ÁÖÀÇÇ϶ó.
  • bcc/ld¿¡ À־ ¾Æ¸¶µµ a.out.h¿Í ar.hÀÇ º¹»çº»ÀÌ ÇÊ¿äÇÒ °ÍÀÌ´Ù. DJGPP´Â ±×°ÍÀ» °¡Áö°í Àִµ¥, ´Ù¸¥ C ÄÄÆÄÀÏ·¯ ÀÏ °æ¿ì¿¡´Â ´Ù¸¥ GCC(µµ½º, ¸®´ª½º, VSTa, µîµî)¿¡¼­ ¸ô·¡ »ì¦ ÇØ¾ß ÇÒ °ÍÀÌ´Ù. ( ^.% )
  • bcc/ld¿¡ À־ BSD_A_OUT ¸ÅÅ©·ÎÁ¤ÀǸ¦ ¸ðµç ÆÄÀÏ¿¡¼­ ÇØ¾ß ÇÒ ÇÊ¿ä°¡ ÀÖÀ» °ÍÀÌ´Ù. ±×¸®°í STADARD_GNU_A_OUT Á¤ÀǸ¦ writebin.c¿¡ ÇØµÎ°í ¸®´ª½º a.out.h º¹»çº»À» »ç¿ë°¡´ÉÇÑ µµ½º À̸§À¸·Î º¯°æÇÑ´Ù.
  • turnsÀÇ ¸®´ª½º a.outÀº asm/a.out.h¿¡ Æ÷ÇÔÀÌ µÇ¾î Àִµ¥, À̰͵µ Æ÷ÇÔÀÌ µÇ µµ·Ï ÇØ¾ß ÇÑ´Ù. 16ºñÆ® ¾î¼Àºí·¯¿¡¼­´Â asm/a.out.h¸¦ 24ºñÆ® º¸´Ù ÀûÀº ºñÆ® Çʵå·Î ¼¼Æ®µÈ °Í¿¡ ´ëÀÀÇÏ´Â 24ºñÆ® ºñÆ®Çʵ带 º¯°æÇÏ¿©¾ß ÇÑ´Ù.
  • ³ª´Âcc1À» ½ÃµµÇØ º¸Áö ¾Ê¾Ò´Âµ¥, ±×·¯³ª ½ÇÁ¦·Î ¿©·¯ºÐµéÀÌ Çغ¸°í ½Í´Ù¸é cc1À» ÄÄÆÄÀÏ ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×·¯³ª, ¾Æ¸¶µµ bcc frontend¸¦ ´Ù½Ã Àû¾î¾ß Çϰųª ¹Ù·Î cc1À» »ç¿ëÇØ¾ß ÇÒ°ÍÀÌ´Ù.¿Ö³ÄÇÏ¸é ±×°ÍÀº ÄÄÆÄÀÏ ½Ã cc1, as, ld¸¦ ÀÛµ¿½Ãų ¶§ fork()/exec()/wait() Æ®·¹ºí¿¡ ÀÇÁ¸Çϱ⠶§¹®ÀÌ´Ù.
  • Àüó¸®µÈ µµ½º¹öÁ¯Àº ´ÙÀ½¿¡¼­ ¹ß°ßÇÒ ¼ö ÀÖ´Ù. www.eleves.ens.fr:8080/home/rideau/files/asld86.zip ¸¸ÀÏ ±×°ÍµéÀ» ÇÁ¸® ÄÄÆÄÀÏ·¯·Î Á¦ÄÄÆÄÀÏÀ» ÇÏ°Ô µÈ´Ù¸é ³ª¿¡°Ô º¸³»´Þ¶ó. ±×·¯¸é ¸Å¿ì °í¸¶¿ï °ÍÀÌ´Ù.

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

Tunes

Tunes 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 À§¿¡¼­ ÅëÇÕµÈ °ÍÀ̶õ ¹«¾ùÀ» ¶æÇϴ°¡

GCC

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

GAS

GAS´Â Àý´ë·Î ¸ÅÅ©·Î ±â´ÉÀ» Æ÷ÇÔÇÏ°í ÀÖÁö ¾Ê´Ù. ±×·¯³ª, 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) < $< > $@

CPP

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

M4

M4´Â ¸ÅÅ©·Î󸮿¡ À־ Ź¿ùÇÑ ´É·ÂÀ» º¸¿©ÁØ´Ù. Àç±ÍÀû Ç¥Çö, Áú¼­Á¤¿¬ÇÑ ±ÔÄ¢µî¿¡ À־ ±¦Âú¾Æ º¸ÀδÙ. 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 Linux

GCC·Î ¸µÅ©Çϱâ

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. ÇØ¾ß ÇÒÀÏ

  • ºÒ¿ÏÀüÇÑ ºÎºÐ ä¿ì±â
  • ¼ÒÇÁÆ®¿þ¾î¿¡ ´ëÇÑ ´õ ¸¹Àº ¾È³»Ç¥Áö º¸Å±â
  • ½ÇÁ¦ »ýÈ°¿¡ º¸ÅÆÀÌ µÇµµ·Ï Á¦¾ÈµÈ °¢°¢ÀÇ ¼Ö·ç¼ÇµéÀÇ ¹®¹ý, ÆÄ¿ö, Á¦ÇÑÁ¡ µîÀ» ¼³¸íÇÒ ¼ö ÀÖ´Â °£´ÜÇÑ ¿¹Á¦ º¸Å±⠳¡.


ID
Password
Join
Let him who takes the Plunge remember to return it by Tuesday.


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.0017 sec