3.2. GAS

GAS ´Â GCC °¡ »ç¿ëÇÏ´Â GNU ¾î¼Àºí·¯ÀÌ´Ù.

3.2.1. ¾îµð¿¡¼­ GAS ¸¦ ãÀ» ¼ö Àִ°¡

GCC ¸¦ ãÀº °÷°ú °°Àº Àå¼Ò¿¡ ÀÖ´Ù. ÆÐŰÁö binutils ¾È¿¡ ÆÐŰ¡µÇ¾î ÀÖ´Ù.

ÃÖ½ÅÀÇ GAS ¹öÁ¯Àº HJLu ¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù. url Àº ´ÙÀ½°ú °°´Ù : ftp://ftp.varesearch.com/pub/support/hjl/binutils/.

3.2.2. AT&T ¹®¹ý

GAS °¡ ¿ø·¡ 32-bit ÀÇ À¯´Ð½º ÄÄÆÄÀÏ·¯¸¦ Áö¿øÇϵµ·Ï óÀ½¿¡ °í¾ÈµÇ¾ú±â ¶§¹®¿¡, GAS ´Â Ç¥ÁØ AT&T ¹®¹ýÀ» »ç¿ëÇÑ´Ù. Ç¥ÁØ AT&T ¹®¹ýÀº m68k ¾î¼Àºí·¯ÀÇ ¹®¹ý°ú »ó´çÈ÷ À¯»çÇÏ´Ù. ÇöÀç UNIX °è¿­ ¾î¼Àºí¸®ÀÇ Ç¥ÁØ ¹®¹ýÀ̱⵵ ÇÏ´Ù. ÀÌ ¹®¹ýÀº Intel ¹®¹ý¿¡ ºñÇØ¼­ ÁÁÁöµµ ¾Ê°í, ³ª»ÚÁöµµ ¾Ê´Ù. ´ÜÁö ´Ù¸¦ »ÓÀÌ´Ù. ¿©·¯ºÐµéÀÌ ±×°ÍÀ» »ç¿ëÇØº¸°Ô µÇ¸é, ÀÎÅÚ ¹®¹ý¿¡ ºñÇØ Á»´õ ¸¹Àº ±ÔÄ¢ÀÌ ÀÖÀ½ À» ¾Ë°Ô µÉ °ÍÀÌ´Ù.

¾Æ·¡¿¡ GAS ¹®¹ýÀÇ ÁÖ¿ä »çÇ×µéÀ» ³ª¿­ÇϰڴÙ.

ÁÖÀÇ : AT&T ¹®¹ýÀ» ÀÌ¿ëÇÑ ¾î¼Àºí¸® ¼Ò½ºÄÚµå¿Í ÀÎÅÚÀÇ ¹®¹ýÀ» ÀÌ¿ëÇÑ ¼Ò½º ÄÚµå °£¿¡ ¼­·Î º¯È¯À» ½ÃÄÑ ÁÖ´Â ÇÁ·Î±×·¥Àº °ÅÀÇ ¾ø´Ù.(few programs)

Note: There are few programs which may help you to convert source code between AT&T and Intel assembler syntaxes; some of the are capable of performing conversion in both directions.

GAS ´Â ÆÐŰÁö¿¡ TeXinfo Çü½ÄÀ¸·Î µÈ ¸Å¿ì ÀÌÇØÇϱ⠽¬¿î ¹®¼­¸¦ °¡Áö°í ÀÖ´Ù. .info ÆäÀÌÁö Çü½ÄÀ¸·Î Emacs µî¿¡¼­ ºê¶ó¿ì¡ ÇÒ ¼öµµ ÀÖ´Ù. ÆÄÀϸíÀº gas.doc À̰ųª as.doc ÀÏ °ÍÀÌ´Ù. ÀǽÉÀÇ ¿©Áö ¾øÀÌ ÃÖ°íÀÇ ¹®¼­´Â ¼Ò½ºÄÚµå ÀÚüÀÌ´Ù.

´Ù½ÃÇѹø, ¸®´ª½ºÀÇ ¼Ò½º°¡ ÃÖ»óÀÇ ¿¹Á¦ÀÓÀ» »ó±âÇ϶ó. linux/arch/i386/ µð·ºÅ丮 ¾Æ·¡¿¡¼­ kernel/*.S, boot/compressed/*.S, mathemu/*.S. °ú °°Àº ÆÄÀÏÀ» ¿­¾î¼­ ÀÐ¾î º¸¾Æ¶ó. ÃÖ°íÀÇ ¿¹Á¦ÀÌ´Ù.

¸¸¾à ¿©·¯ºÐÀÌ ¾ð¾î¸¦ Çϳª °í¾ÈÇϰí Àְųª, ¾²·¹µå ÆÐŰÁö¸¦ ÇÁ·Î±×·¡¹ÖÇϰí ÀÖ´Ù¸é, ´Ù¸¥ ¾ð¾î( OCaml, Gforth, etc.) ³ª ½º·¹µå ÆÐŰÁöµé (QuickThreads, MIT pthreads, LinuxThreads, etc) À» »ìÆì º¸±â¸¦ ¿øÇÒ °ÍÀÌ´Ù. ±×¸®°í, »ìÆì º¸¸é µÈ´Ù!!!

¸¶Áö¸·À¸·Î, ´ÜÁö, C ÇÁ·Î±×·¥À» ¾î¼Àºí¸®·Î ÄÄÆÄÀÏ Çϱ⸸À» ¿øÇÑ´Ù¸é, ´ÜÁö, ¿©·¯ºÐÀÌ ¿øÇÏ´Â ÀνºÆ®·°¼ÇÀÇ Á¾·ù¿Í ¹®¹ý¸¸ ¾Ë¸é µÉ °ÍÀÌ´Ù. À§¿¡¼­ ¿©·¯ºÐÀÌ Á¤¸» ¾î¼Àºí¸® ÇÁ·Î±×·¡¹ÖÀÌ ÇÊ¿äÇѰ¡¸¦ ÆÇ´ÜÇϵµ·Ï µ½´Â ¼½¼ÇÀ» º¸µµ·Ï Ç϶ó : See section Do you need assembly? above.

3.2.3. GAS ÀÇ ÀÎÅÚ ¹®¹ý Áö¿ø

binutils 2.10 ºÎÅÍ GAS ´Â ÀÎÅÚ °è¿­ÀÇ ¹®¹ý ¶ÇÇÑ Áö¿øÇÑ´Ù. .intel_syntax Áö½Ã¾î¸¦ ÀÌ¿ëÇÏ¿© Ȱ¼ºÈ­ ½ÃŲ´Ù.

3.2.4. 16-ºñÆ® ¸ðµå

Binutils (2.9.1.0.25+) ÀÌÈÄÀÇ ¹öÁ¯ºÎÅÍ´Â i386 °è¿­ÀÇ ÄÄÇ»Å͵鿡¼­ 16ºñÆ® ¸ðµå(·¹Áö½ºÅÍ¿Í ÁÖ¼ÒÁöÁ¤¹æ½Ä)¸¦ ¿Ïº®ÇÏ°Ô Áö¿øÇÑ´Ù. ¾î¼Àºí¸® Äڵ忡¼­ 16ºñÆ®¿Í 32ºñÆ® ¸ðµå¸¦ ÀüȯÇÒ ¶§´Â .code16 °ú .code32 Áö½ÃÀÚ¸¦ »ç¿ëÇÏ¸é µÈ´Ù.

¶ÇÇÑ, ¸î¸î »ç¶÷µé(oskit ÀÇ ÀúÀڵ鵵 Æ÷ÇÔ)ÀÌ »ç¿ëÇß´ø ±ò²ûÇÑ Æ®¸¯ÀÌ Àִµ¥, ±×°ÍÀº GCC ·Î ÇÏ¿©±Ý 16 ºñÆ® ¸®¾ó¸ðµå¿ëÀÇ Äڵ带 »ý¼ºÇϵµ·Ï °­Á¦ÇÏ´Â °ÍÀε¥, ÀζóÀÎ ¾î¼Àºí¸® ¹®ÀåÀÎ asm(".code16\n") À» ¾¸À¸·Î½á ±×·¸°Ô Çß´Ù. ±× ¹®ÀåÀ» »ç¿ëÇϸé, GCC ´Â ¿©ÀüÈ÷ 32ºñÆ®ÀÇ ÁÖ¼ÒÁöÁ¤ ¹æ½ÄÀ» »ç¿ëÇÑ Äڵ带 »ý»êÇÏÁö¸¸, GAS °¡ Àû´çÇÑ 32ºñÆ®ÀÇ Á¢µÎ¾î¸¦ ºÙ¿©ÁØ´Ù.

3.2.5. ¸ÅÅ©·Î Áö¿ø

GAS ¿¡´Â ¾ó¸¶ÀÇ ¸ÅÅ©·Î¿Í °ü·ÃµÈ ±â´Éµµ Æ÷ÇԵǾî ÀÖ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº texinfo ¹®¼­¸¦ º¸¶ó. ¸ÅÅ©·Î¿¡ ´õÇÏ¿©, GCC ´Â .s È®ÀåÀÚÀÇ ÆÄÀÏÀ» GAS ¿¡ ¹Ù·Î º¸³»¿©¾ß ÇÒ ¼ø¼öÇÑ ¾î¼Àºí¸® ·Î ÀνÄÇϴµ¥, ¶ÇÇÑ, .S ÀÇ È®ÀåÀÚ¸¦ °¡Áö´Â ÆÄÀÏÀº GAS ·Î ³Ñ±âÁö Àü¿¡ ¸ÕÀú CPP ¸¦ °ÅÄ£ ÈÄ¿¡ ³Ñ°Ü¾ß ÇÒ ÆÄÀÏ·Î ÀνÄÇÑ´Ù. °è¼Ó ¸»ÇÏ´Â °ÍÀÌÁö¸¸, ¸®´ª½ºÀÇ ¼Ò½º¸¦ ¿¹Á¦»ï¾Æ º¸¶ó.

GAS ´Â ¶ÇÇÑ, GASP (GAS Preprocessor) ¸¦ °¡Áö°í Àִµ¥, GASP °¡ ÇÏ´Â ÀÏÀº ÀϹÝÀûÀÎ ¸ÅÅ©·Î¾î¼Àºí¸®ÀÇ Æ®¸¯À» GAS ¿¡ ´õÇØÁÖ´Â °ÍÀÌ´Ù. GASP ´Â GNU binutils ÆÐŰÁö ¾È¿¡ GAS ¿Í ´õºÒ¾î¼­ ¹èÆ÷µÈ´Ù. GASP ´Â CPP ³ª m4 À¯Æ¿¸®Æ¼Ã³·³ ÇÊÅÍ·Î½á µ¿ÀÛÇÑ´Ù. ÀÚ¼¼ÇÑ °ÍÀº ÀúÀÚ°¡ Àß ¸ð¸£°ÚÀ¸³ª, texinfo Çü½ÄÀÇ ¹®¼­°¡ µû¶ó¿À¹Ç·Î, ¹®¼­¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù. ÀúÀÚ¿¡°Õ GAS ¿Í GASP ÀÇ Á¶ÇÕÀÌ ÀϹÝÀûÀÎ macro-assembler ó·³ ´À²¸Á³´Ù.