AS86 Àº 16ºñÆ®¿Í 32ºñÆ® ¸ðµÎ¸¦ Áö¿øÇÏ´Â 80x86 ¿ëÀÇ ¾î¼Àºí·¯ÀÌ´Ù. ÀÌ ÇÁ·Î±×·¥Àº Bruce Evans ÀÇ C ÄÄÆÄÀÏ·¯(BCC) ÆÐŰÁöÀÇ ÀϺÎÀÌ´Ù. °ÅÀÇ ´ëºÎºÐ ÀÎÅÚÀÇ ¹®¹ýÀ» µû¸£Áö¸¸, ÁÖ¼Ò ÁöÁ¤¹æ½Ä µî¿¡¼ ¾à°£ÀÇ Â÷À̸¦ º¸ÀδÙ.
¿ÏÀüÈ÷ ½Ã´ë¿¡ µÚ¶³¾îÁø AS86 ÀÇ ¹öÁ¯Àº HJLu ¿¡ ÀÇÇØ ¹èÆ÷µÈ´Ù. ¿ëµµ´Â ´ÜÁö ¸®´ª½º Ä¿³ÎÀ» ÄÄÆÄÀÏÇÏ´Â°Í ¹Û¿¡ ¾ø´Ù. bin86 ÆÐŰÁö (ÇöÀç ¹öÁ¯ 0.4) ¾È¿¡ Æ÷ÇԵǾî ÀÖ´Ù. ¸®´ª½º GCC ¸¦ ±¸ÇÒ ¼ö ÀÖ´Â °÷ÀÌ¸é ¾îµð¿¡³ª ÀÖ´Ù. ±×·¯³ª, ÀúÀÚ´Â ¸®´ª½º¸¦ ÄÄÆÄÀÏÇÏ´Â ¿ëµµ ¿Ü¿¡´Â ¾Æ¹«µµ AS86 À» ¾²Áö ¾Ê´Â´Ù°í ¸»ÇØÁÖ°í ½Í´Ù. °Ô´Ù°¡ ¸®´ª½º¸¦ ÄÄÆÄÀÏÇϴµ¥¿¡µµ, ¹Ì´Ð½ºÀÇ ¿ÀºêÁ§Æ® ÆÄÀÏ Æ÷¸ËÀ» Áö¿øÇÏ´Â ºÎºÐ ¿Ü¿¡´Â ¾²ÀÌÁö ¾Ê´Â´Ù. ÀÌ ºÐ¾ß´Â GNU binutils µî°ú °°Àº ´Ù¸¥ Åø¿¡¼´Â ÀüÇô Áö¿øÇÏÁö ¾Ê´Â ºÐ¾ßÀÌ´Ù. ±×¸®°í, AS86 Àº 32ºñÆ® ¸ðµå¿¡¼ ¸î°¡Áö ¹ö±×¸¦ ³»Æ÷Çϰí ÀÖ´Ù. ±×³É AS86 À» ¸®´ª½º¸¦ ÄÄÆÄÀÏÇÏ´Â µ¥¿¡¸¸ »ç¿ëÇ϶ó.
Bruce Evans ÀÇ ÄÄÆÄÀÏ·¯ÀÇ ÃֽйöÁ¯Àº Ç×»ó FreeBSD ¿Í ÇÔ²² ¹èÆ÷µÈ´Ù. 2.1 ¹öÁ¯ÀÇ ¹èÆ÷ÆÇ¿¡¼´Â ¼Ò½º¸¦ ãÀ» ¼ö ¾ø¾ú´Ù :( ÀúÀÚÀÇ È¨ÆäÀÌÁö¿¡ ¼Ò½º¸¦ µÎ°Ú´Ù. http://www.tunes.org/~fare/files/asm/bcc-95.3.12.src.tgz
¾î·µç Linux/8086 (aka ELKS) ÇÁ·ÎÁ§Æ®´Â bcc ¸¦ À¯Áö/º¸¼ö Çϰí ÀÖ±â´Â ÇÏ´Ù. (ÀúÀÚ´Â 32 ºñÆ® ÆÐÄ¡°¡ Æ÷ÇԵǾú´Ù°í´Â »ý°¢ÇÏÁö ¾Ê´Â´Ù) http://www.linux.org.uk/ELKS-Home/ (ȤÀº http://www.elks.ecs.soton.ac.uk) ¿Í ftp://linux.mit.edu/pub/linux/ELKS/ ¸¦ µÑ·¯º¸µµ·Ï Ç϶ó. ÀúÀÚ°¡ ¿©±â ¿Ã¶ó¿À´Â °³¹ß ¹öÁ¯µéÀ» ¸ðµÎ È®ÀÎÇØ º¼ ¼ö ¾ø¾ú´Ù. ÀÌ ±ÛÀ» ÀÐÀ¸½Ã´Â ºÐÀÌ °ü½ÉÀÌ ÀÖ´Ù¸é Á¶»çÇØ º¸°í ÀúÀÚ¿¡°Ô À̾߱âÇØ Áشٸé ÁÁ°Ú´Ù.
±×¸®°í, ¹«¾ùº¸´Ù ÀÌ ÅøÀÇ º¸´Ù ÃÖ½ÅÀÇ ¹öÁ¯Àº ¸®´ª½ºÀÇ a.out Æ÷¸ËÀÇ ½ÇÇàÆÄÀÏ Çü½ÄÀ» Áö¿øÇÑ´Ù. ±×·¡¼, ¿©·¯ºÐÀº ¿©·¯ºÐÀÇ Äڵ带 ¸®´ª½º ÇÁ·Î±×·¥¿¡ ¸µÅ©½ÃÄѼ »ç¿ëÇϰųª, GNU binutils ÆÐŰÁöÀÇ ÅøµéÀ» ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÇ ÀڷḦ À¯ÁöÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. AS86 ÇÁ·Î±×·¥Àº ÀÌÀü ¹öÁ¯ ȤÀº ´Ù¸¥ ÇÁ·Î±×·¥°ú ¾Æ¹«·± Ãæµ¹ ¾øÀÌ ¿©·¯ºÐÀÇ ½Ã½ºÅÛ¿¡ °øÁ¸ÇÒ ¼ö ÀÖ´Ù.
1995 ³â 3¿ù 12ÀÏ ÀÌÀüÀÇ ¹öÁ¯ÀÇ BCC ´Â ¸ðµç ¼¼±×¸ÕÆ®ÀÇ Çª½Ã/ÆË À» 16ºñÆ®·Î ÇÏ´Â ¿À·ù°¡ Àִµ¥, ±×°ÍÀº 32ºñÆ® ¸ðµå·Î ÇÁ·Î±×·¡¹Ö Çϴµ¥ ÀÖ¾î¼ »ó´çÈ÷ ±ÍÂú°í, °ñÄ¡¾ÆÇ ¹®Á¦ÀÌ´Ù. ÀúÀÚ´Â TUNES ÇÁ·ÎÁ§Æ®°¡ AS86 À» »ç¿ëÇÒ ´ç½Ã ±×¿¡´ëÇÑ ÆÐÄ¡¸¦ Çß¾ú´Ù. http://www.tunes.org/~fare/files/asm/as86.bcc.patch.gz ºê·ç½º ¿¡¹Ý½ºµµ ÀÌ ÆÐÄ¡¸¦ ½ÂÀÎÇÏ¿´´Ù. ±×·¸Áö¸¸, ±×´Â bcc ÀÇ »õ·Î¿î ¸±¸®Áî´Â ¹ßÇ¥ÇÏÁö ¾Ê¾Ò´Ù.
¾Æ·¡¿¡ BCC ¸¦ »ç¿ëÇØ¼ .s ÆÄÀϷκÎÅÍ a.out Çü½ÄÀÇ .o ¿ÀºêÁ§Æ® ÄÚµå¿Í .l ÀÇ ¸®½ºÆÃ ÆÄÀÏÀ» »ý¼º½ÃŰ´Â »ý¼º½ÃŰ´Â GNU makefile ÀÇ ¿£Æ®¸®°¡ ÀÖ´Ù.
%.o %.l: %.s bcc -3 -G -c -A-d -A-l -A$*.l -o $*.o $< |
¿©·¯ºÐÀÌ ¸®½ºÆÃ ÆÄÀÏÀ» »ý¼ºÇϱ⸦ ¿øÇÏÁö ¾Ê´Â´Ù¸é, %.l °ú -A-l, ±×¸®°í -A$*.l À» »èÁ¦ÇÏ¸é µÈ´Ù. ±×¸®°í, a.out ¸»°í ´Ù¸¥ ÆÄÀÏÀÌ Ãâ·ÂµÇ°Ô ÇÏ·Á¸é, bcc ÀÇ ¹®¼¸¦ ÂüÁ¶ÇÏ¿© ´Ù¸¥ Áö¿øµÇ´Â Çü½ÄÀ» ã¾Æº¸°Å³ª, GNU binutils ÆÐŰÁöÀÇ objcopy À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇ϶ó.
¹®¼µéÀº bcc ÆÐŰÁö ¾È¿¡ Æ÷ÇԵǾî ÀÖ´Ù. FreeBSD »çÀÌÆ®ÀÎ http://www.tunes.org/~fare/files/asm/bcc-95.3.12.src.tgz ¿¡¼ ¸ÇÆäÀÌÁö¸¦ ±¸ÇÒ ¼ö ÀÖ¾ú´Ù. ELKS ÀÇ °³¹ßÀÚµéÀÌ ´õ ¸¹ÀÌ ¾Ë°í ÀÖÀ» °ÍÀÌ´Ù. Èì... ±×¸®°í, Á» ´õ ¾Ë°í ½Í´Ù¸é, AS86 ÀÇ ¼Ò½º ±× ÀÚü°¡ ÁÁÀº ¹®¼°¡ µÉ °ÍÀÌ´Ù. ÁÖ¼®ÀÌ ±×¸® Àß µÇ¾î ÀÖ´Â °ÍÀº ¾Æ´ÏÁö¸¸, ÇÁ·Î±×·¡¹Ö ½ºÅ¸ÀÏÀº ¸Å¿ì Á÷¼±Àû(?)ÀÌ´Ù. ¿©·¯ºÐÀº ELKS ÇÁ·ÎÁ§Æ®³ª TUNES ÇÁ·ÎÁ§Æ® 0.0.0.25 ¿¡¼ AS86 ÀÌ ¾î¶»°Ô ¾²¿´´ÂÁö »ìÆìº¼ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù.
AS86 Àº °£´ÜÇÑ ¸ÅÅ©·Îµµ Áö¿øÇÑ´Ù. ±×·¸Áö¸¸, ÀúÀÚ´Â ±×¿¡´ëÇÑ ¹®¼´Â ãÁö ¸øÇÏ¿´´Ù. AS86ÀÇ ¼Ò½º´Â ¸Å¿ì straightforward ÇÏ°Ô ¾²¿´À¸¹Ç·Î, ¿©·¯ºÐÀÌ ¿øÇÑ´Ù¸é, ¼Ò½º¸¦ »ìÆìº¸°í, ¿øÇÏ´Â ºÎºÐÀ» ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¿©·¯ºÐÀÌ ´Ü¼øÇÑ ¸ÅÅ©·Î ÀÌ»óÀÇ ´õ ¸¹Àº °ÍÀ» ¿øÇÑ´Ù¸é ¿ÜºÎÀÇ ÇÊÅÍ (µÚ¿¡¼ ¼³¸íÇÑ´Ù)¸¦ ÀÌ¿ëÇÒ ¼öµµ ÀÖ´Ù.
Linus ´Â ½ñ¾ÆÁö´Â ¸ÞÀÏ´õ¹Ì¿¡ ÆÄ¹¯Çô :) ÀÖ´Ù. ±×¸®°í, HJLu (bin86 ÀÇ °ø½ÄÀû À¯Áö/º¸¼öÀÚ) °¡ as86 ÀÇ as86 ÀÇ ÃֽйöÁ¯À» »ç¿ëÇÑ ÄÚµåÀÇ Àç ±¸Ãà º¸´Ù ±¸¹öÁ¯ÀÇ ÇØÅ·À» ¼±ÅÃÇ߱⠶§¹®¿¡ ÀúÀÚ°¡ as86 ¿¡ ¸®´ª½º¸¦ ÄÄÆÄÀÏ ÇÒ ¼ö ÀÖµµ·Ï ÇÑ ÆÐÄ¡°¡ Á¦´ë·Î ¹Þ¾Æµé¿©ÁöÁö ¾Ê¾Ò´Ù°í »ý°¢ÇÑ´Ù. (¿ªÀÚÁÖ : ¹ø¿ªÀÌ ÀÌ»óÇØ¼ ¿ø¹®À» ½Æ½À´Ï´Ù) Linus is buried alive in mail, and since HJLu (official bin86 maintainer) chose to write hacks around an obsolete version of as86 instead of building clean code around the latest version, I don't think my patch for compiling Linux with a modern as86 has any chance to be accepted if resubmitted.
±×·¯³ª, º° ¹®Á¦ ¾ø´Ù. bin86 ÆÐŰÁö¿¡¼ as86 À» /usr/bin/ ¿¡ ±×´ë·Î ³öµÎ°í, bcc °¡ ÃÖ½ÅÀÇ as86 À» /usr/local/libexec/i386/bcc/as ·Î ÀνºÅçÇϵµ·Ï ÇØ ÁÖ¸é µÈ´Ù. ¿©·¯ºÐÀº ¸í½ÃÀûÀ¸·Î /ÁÁÀº/ ¹öÁ¯ÀÇ as86 À» È£ÃâÇÒ ÇÊ¿ä´Â ¾ø´Ù. Á¦´ë·Î µÈ ¿É¼Ç°ú ÇÔ²² È£ÃâµÇ¸é, bcc °¡ ¸ðµç°ÍÀ» Á¦´ë·Î Á¶Á¤ÇØ Áֱ⠶§¹®ÀÌ´Ù. ¸®´ª½ºÀÇ a.out Æ÷¸ËÀ¸·ÎÀÇ º¯È¯±îÁö Æ÷ÇÔÇØ¼ ¸»ÀÌ´Ù. ±×·¡¼, ÆÄÀÏÀ» as86 À» ¹Ù·Î »ç¿ëÇÏÁö ¸»°í, bcc ¸¦ ÇÁ·ÐÆ®¿£µå·Î ÀÌ¿ëÇØ¼ ¾î¼ÀºíÇ϶ó. Now, this shouldn't matter: just keep your as86 from the bin86 package in /usr/bin/, and let bcc install the good as86 as /usr/local/libexec/i386/bcc/as where it should be. You never need explicitly call this "good" as86, because bcc does everything right, including conversion to Linux a.out, when invoked with the right options; so assemble files exclusively with bcc as a frontend, not directly with as86.
Áö±ÝÀº gas µµ 16ºñÆ® Äڵ嵵 Áö¿øÇϰí, NASM µµ ±×·¸°Ô ÇÒ ¸ð¾çÀ̹ǷÎ, ¸®´ª½º´Â AS86 ÀÇ ±×´Ã¿¡¼ ¹þ¾î³¯ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ´©°¡ ¾Ë¸®... Since GAS now supports 16-bit code, and NASM looks promising, maybe Linux will get rid of AS86, anyway? Who knows!