GAS ´Â GCC °¡ »ç¿ëÇÏ´Â GNU ¾î¼Àºí·¯ÀÌ´Ù.
GCC ¸¦ ãÀº °÷°ú °°Àº Àå¼Ò¿¡ ÀÖ´Ù. ÆÐŰÁö binutils ¾È¿¡ ÆÐŰ¡µÇ¾î ÀÖ´Ù.
ÃÖ½ÅÀÇ GAS ¹öÁ¯Àº HJLu ¿¡¼ ±¸ÇÒ ¼ö ÀÖ´Ù. url Àº ´ÙÀ½°ú °°´Ù : ftp://ftp.varesearch.com/pub/support/hjl/binutils/.
GAS °¡ ¿ø·¡ 32-bit ÀÇ À¯´Ð½º ÄÄÆÄÀÏ·¯¸¦ Áö¿øÇϵµ·Ï óÀ½¿¡ °í¾ÈµÇ¾ú±â ¶§¹®¿¡, GAS ´Â Ç¥ÁØ AT&T ¹®¹ýÀ» »ç¿ëÇÑ´Ù. Ç¥ÁØ AT&T ¹®¹ýÀº m68k ¾î¼Àºí·¯ÀÇ ¹®¹ý°ú »ó´çÈ÷ À¯»çÇÏ´Ù. ÇöÀç UNIX °è¿ ¾î¼Àºí¸®ÀÇ Ç¥ÁØ ¹®¹ýÀ̱⵵ ÇÏ´Ù. ÀÌ ¹®¹ýÀº Intel ¹®¹ý¿¡ ºñÇØ¼ ÁÁÁöµµ ¾Ê°í, ³ª»ÚÁöµµ ¾Ê´Ù. ´ÜÁö ´Ù¸¦ »ÓÀÌ´Ù. ¿©·¯ºÐµéÀÌ ±×°ÍÀ» »ç¿ëÇØº¸°Ô µÇ¸é, ÀÎÅÚ ¹®¹ý¿¡ ºñÇØ Á»´õ ¸¹Àº ±ÔÄ¢ÀÌ ÀÖÀ½ À» ¾Ë°Ô µÉ °ÍÀÌ´Ù.
¾Æ·¡¿¡ GAS ¹®¹ýÀÇ ÁÖ¿ä »çÇ×µéÀ» ³ª¿ÇϰڴÙ.
·¹Áö½ºÅÍÀÇ À̸§Àº %¹®ÀÚ·Î ½ÃÀÛÇÑ´Ù. ±×·¡¼, ·¹Áö½ºÅ͸¦ Ç¥±âÇÒ ¶§ ´ÙÀ½Ã³·³ Ç¥½ÃÇÑ´Ù : %eax, %dl µîµî.. ÀÌ·¸°Ô ÇÏ´Â °ÍÀº ¿ÜºÎÀÇ C µî¿¡¼ Á¤ÀÇµÈ ½Éº¼À» ¾Æ¹«·± È¥¶õ ¾øÀÌ °ð¹Ù·Î ¾î¼Àºí¸® ¼Ò½º¿¡ Æ÷ÇÔ½ÃŰ´Â °ÍÀ» °¡´ÉÇÏ°Ô ÇØ ÁØ´Ù.
¿ÀÆÛ·£µåÀÇ ¼ø¼°¡, ¼Ò½º°¡ ¸ÕÀú ¿À°í, µ¥½ºÆ¼³×À̼ÇÀÌ µÚ¿¡ ¿Â´Ù. ÀÎÅÚÀÇ ¹®¹ý°ú´Â ¹Ý´ëÀÌ´Ù. ±×·¡¼, ÀÎÅÚÀÇ ¹®¹ýÀ¸·Î ¾´ ¹®ÀåÀÌ mov eax,edx °ú °°´Ù¸é, GAS ÀÇ ¹®¹ýÀ¸·Î´Â mov %edx,%eax °ú °°ÀÌ ¾´´Ù. (edx ·¹Áö½ºÅÍÀÇ ³»¿ëÀ» eax ·¹Áö½ºÅÍ·Î ¿Å°Ü¶ó...´Â ¶æ)
¿ÀÆÛ·£µåÀÇ Å©±â°¡ ÀνºÆ®·°¼ÇÀÇ Á¢¹Ì¾î·Î ºÙ´Â´Ù. °¡´ÉÇÑ Á¢¹Ì¾î´Â b ´Â ¹ÙÀÌÆ®¸¦(8-bit), w ´Â ¿öµå¸¦(16-bit) l ´Â long ÇüÀ»(32-bit) ³ªÅ¸³»´Â Á¢¹Ì¾îÀÌ´Ù. ¿¹¸¦ µéÀÚ¸é, ¹Ù·Î ¾Õ ´Ü¶ô¿¡¼ ¾ð±ÞÇÑ ÀνºÆ®·°¼ÇÀÇ ¿Ã¹Ù¸¥ ¹®¹ýÀº movl %edx,%eax °¡ µÇ¾î¾ß ÇÑ´Ù. ±×·¯³ª, GAS ´Â ¾ö°ÝÇÏ°Ô AT&T ¹®¹ýÀÇ ±ÔÄ¢À» ÁؼöÇÒ °ÍÀ» ¿ä±¸ÇÏÁö ¾Ê´Â´Ù. ±×·¡¼, ¿ÀÆÛ·£µåÀÇ Å©±â¸¦ ³ªÅ¸³»´Â Á¢¹Ì¾î´Â ¿ÀÆÛ·£µå·Î ¾²ÀÎ ·¹Áö½ºÅÍÀÇ À̸§À¸·ÎºÎÅÍ ¿ÀÆÛ·£µåÀÇ Å©±â¸¦ À¯ÃßÇÒ ¼ö ÀÖÀ» °æ¿ì¿¡´Â »ý·«Çصµ µÈ´Ù. ¶ÇÇÑ ±×·¸Áö ¾ÊÀ» °æ¿ì¶ó°í ÇÏ´õ¶óµµ, 32-bit ÀÇ Å©±â¸¦ °¡Á³´Ù°í °¡Á¤ÇÑ »óÅ¿¡¼ µ¿ÀÛÇÑ´Ù(°æ°í ¸Þ¼¼Áö¸¦ »Ñ¸°´Ù)
¿ÀÆÛ·£µå¿¡ ·¹Áö½ºÅͰ¡ ¾Æ´Ï¶ó »ó¼ö µîÀ» »ç¿ëÇÒ ¶§¿¡´Â ±× ¿ÀÆÛ·£µå ¾Õ¿¡ $ ÀÇ Á¢µÎ¾î¸¦ ºÙ¿©ÁØ´Ù. Áï, addl $5,%eax Àº, %eax ·¹Áö½ºÅÍ¿¡ long Çü ¼ýÀÚ 5 ¸¦ ³ÖÀ¸¶ó´Â ¶æÀÌ´Ù.
¿ÀÆÛ·£µå¿¡ Á¢µÎ¾î°¡ ¾øÀ» °æ¿ì¿¡´Â ±×°ÍÀÌ ¸Þ¸ð¸® ÁÖ¼Ò¶ó´Â °ÍÀ» ÀǹÌÇÑ´Ù. ±×·¡¼, movl $foo,%eax Àº º¯¼ö foo ÀÇ ÁÖ¼Ò ¸¦ ·¹Áö½ºÅÍ %eax ¿¡ ³ÖÀ¸¶ó´Â ¶æÀÌ µÈ´Ù. ±×·¯³ª, movl foo,%eax Àº º¯¼ö foo ÀÇ °ªÀ» %eax ·¹Áö½ºÅÍ¿¡ ³ÖÀ¸¶ó´Â ¶æÀÌ´Ù.
À妽ÌÀ̳ª °£Á¢ ÁÖ¼ÒÁöÁ¤ ¹æ½ÄÀº À妽º ·¹Áö½ºÅ͸¦ ÀÌ¿ëÇϰųª °£Á¢ ¸Þ¸ð¸® ÁÖ¼ÒÀÇ ¹øÁö¸¦ °ýÈ£ ¾È¿¡ ³ÖÀ½À¸·Î½á Ç¥ÇöµÇ¾îÁø´Ù. ¿¹¸¦ µé¾î, testb $0x80,17(%ebp) °ú °°Àº Ç¥ÇöÀº %ebp °¡ °¡¸®Å°´Â ¸Þ¸ð¸® ¹øÁö¿¡¼ 17¹øÂ° ¿ÀÇÁ¼Â¿¡ ÀÖ´Â ¹ÙÀÌÆ® °ªÀÇ ÃÖ»óÀ§ ºñÆ®¸¦ Å×½ºÆ®Ç϶ó´Â ¸»ÀÌ µÈ´Ù.
ÁÖÀÇ : 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.
binutils 2.10 ºÎÅÍ GAS ´Â ÀÎÅÚ °è¿ÀÇ ¹®¹ý ¶ÇÇÑ Áö¿øÇÑ´Ù. .intel_syntax Áö½Ã¾î¸¦ ÀÌ¿ëÇÏ¿© Ȱ¼ºÈ ½ÃŲ´Ù.
Binutils (2.9.1.0.25+) ÀÌÈÄÀÇ ¹öÁ¯ºÎÅÍ´Â i386 °è¿ÀÇ ÄÄÇ»Å͵鿡¼ 16ºñÆ® ¸ðµå(·¹Áö½ºÅÍ¿Í ÁÖ¼ÒÁöÁ¤¹æ½Ä)¸¦ ¿Ïº®ÇÏ°Ô Áö¿øÇÑ´Ù. ¾î¼Àºí¸® Äڵ忡¼ 16ºñÆ®¿Í 32ºñÆ® ¸ðµå¸¦ ÀüȯÇÒ ¶§´Â .code16 °ú .code32 Áö½ÃÀÚ¸¦ »ç¿ëÇÏ¸é µÈ´Ù.
¶ÇÇÑ, ¸î¸î »ç¶÷µé(oskit ÀÇ ÀúÀڵ鵵 Æ÷ÇÔ)ÀÌ »ç¿ëÇß´ø ±ò²ûÇÑ Æ®¸¯ÀÌ Àִµ¥, ±×°ÍÀº GCC ·Î ÇÏ¿©±Ý 16 ºñÆ® ¸®¾ó¸ðµå¿ëÀÇ Äڵ带 »ý¼ºÇϵµ·Ï °Á¦ÇÏ´Â °ÍÀε¥, ÀζóÀÎ ¾î¼Àºí¸® ¹®ÀåÀÎ asm(".code16\n") À» ¾¸À¸·Î½á ±×·¸°Ô Çß´Ù. ±× ¹®ÀåÀ» »ç¿ëÇϸé, GCC ´Â ¿©ÀüÈ÷ 32ºñÆ®ÀÇ ÁÖ¼ÒÁöÁ¤ ¹æ½ÄÀ» »ç¿ëÇÑ Äڵ带 »ý»êÇÏÁö¸¸, GAS °¡ Àû´çÇÑ 32ºñÆ®ÀÇ Á¢µÎ¾î¸¦ ºÙ¿©ÁØ´Ù.
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 ó·³ ´À²¸Á³´Ù.