ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. 4. ÇÔ¼ö¿¡ ´ëÇØ¼ ´Ù·ç±â4.1. º¹ÀâÇÑ ÇÁ·Î±×·¥ ´Ù·ç±â2절¿¡¼ ´Ù·ç¾ú´ø ÇÁ·Î±×·¥Àº ¾î¼Àºí¸®ÀÇ ±âº»ÀûÀÎ ¼³¸íÀ» À§ÇÑ ¸Å¿ì ´Ü¼øÇÑ ÄÚµåµé·Î ÀÌ·ç¾îÁ® ÀÖÀ¸¸ç ´ÜÁö ÇϳªÀÇ ¼½¼Ç¸¸À» °¡Áö°í ÀÖ´Ù. ÇÁ·Î±×·¥ÀÌ ´Ü¼øÇÏ´Ù¸é °ü°è ¾øÁö¸¸. ¸¸¾à Á» ±Ô¸ðÀÖ´Â ÇÁ·Î±×·¥À» ¸¸µé¾î¾ß ÇÑ´Ù¸é ¼öõ, ¼ö¸¸¶óÀÎÀ» ÀÛ¼ºÇØ¾ß µÉÁöµµ ¸ð¸¥´Ù. ÀÌ·± ÇÁ·Î±×·¥À» ÇϳªÀÇ ¼½¼ÇÀ¸·Î À¯ÁöÇϸé À¯Áöº¸¼ö°¡ ¸Å¿ì Èûµé °ÍÀÌ´Ù. ƯÈ÷ ¿©·¯¸íÀÇ ÇÁ·Î±×·¥ÀÌ ÇϳªÀÇ ÇÁ·ÎÁ§Æ®¿¡ Âü°¡ÇÒ °æ¿ì ÇÁ·Î±×·¥ÀÇ À¯Áö º¸µÎ´Â ´õ¿í Èûµé°Ô µÉ°ÍÀÌ´Ù. ÀÌ·¸°Ô ÇÁ·Î±×·¥ÀÇ Å©±â°¡ Ä¿Áö°Å³ª µÎ¸íÀÌ»óÀÇ ÇÁ·Î±×·¡¸Ó°¡ Âü°¡ÇÒ ¶§´Â Äڵ带 ÇÏ´ÂÀÏ¿¡ µû¶ó¼ ¸î°³ÀÇ Á¶°¢À¸·Î ³ª´©¾î¼ °ü¸®ÇÏ¸é µÉ°ÍÀÌ´Ù. ¹°·Ð À̰æ¿ì ³ªÁß¿¡ Á¶°¢À» Çϳª·Î ÇÕÄ¡±â ÆíÇϵµ·Ï Àß Á¤ÀÇµÈ ÀÎÅÍÆäÀ̽º¸¦ ¸¸µé°í ¿©±â¿¡ µû¶ó¼ ÀÚ½ÅÀÌ ¸ÃÀº Äڵ带 ÀÛ¼ºÇϵµ·Ï ÇØ¾ß ÇÑ´Ù. ÀÌ·¸°Ô ÇÏ¸é °¢ ÇÁ·Î±×·¡¸Ó´Â ÀÚ½ÅÀÌ ¸ÃÀº ¿µ¿ª¸¸À» µ¶¸³ÀûÀ¸·Î Å×½ºÆ® ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÇÁ·Î±×·¡¹ÖÀÇ ÁýÁßµµ¸¦ ³ôÀÏ ¼ö ÀÖ°Ô µÇ°í, ´Ù¸¥ ÇÁ·Î±×·¡¸Ó¿Í Á»´õ È¿À²ÀûÀ¸·Î Çù¾÷ÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ÀÌ·¯ÇÑ µ¶¸³ÀûÀÎ °³¹ßÀ» À§Çؼ ÇÁ·Î±×·¡¸Ó´Â ÇÔ¼ö¶ó°í ºÒ¸®¿ì´Â ¿©·¯°³ÀÇ ÄÚµåÁ¶°¢À» ¸¸µé°Ô µÈ´Ù. ¿öµå ÇÁ·Î¼¼¼¸¦ ¸¸µç´Ù°í °¡Á¤Çغ¸ÀÚ. ±×·³ "°¡" °³¹ßÀÚ´Â »ç¿ëÀÚÀÇ Å°ÀÔ·ÂÀ» ó¸®ÇÏ´Â handle_type_chracter ÇÔ¼ö¸¦ ¸¸µéµµ·Ï ÇÑ´Ù. ÀÌ ÇÔ¼ö´Â À¯ÀúÀÇ Å°ÀÔ·ÂÀ» ÀÐ¾î µé¿©¼ ±× °ªÀ» ȸ鿡 Ãâ·ÂÇÏ´Â ÀÏÀ» ÇÑ´Ù. "³ª"¶ó´Â °³¹ßÀÚ´Â check_chracter_spell À̶ó´Â ¿ÀŸ°Ë»ç ÇÔ¼ö¸¦ ¸¸µéµµ·Ï ÇÑ´Ù. ÀÌ ÇÔ¼ö´Â handle_type_chracter¿¡ ÀÇÇØ¼ ÀÔ·ÂµÈ ¹®ÀÚ¸¦ °Ë»çÇØ¼ ¿ÀŸ°¡ ¹ß»ýÇÏ´ÂÁö¸¦ È®ÀÎÇÏ´Â ÀÏÀ» ÇÑ´Ù. ÇÔ¼ö´Â ÀÌ·¸°Ô ÁÖ¾îÁö´Â µ¥ÀÌÅÍ¿Í ÀÌÀÇ Ã³¸®ÇÏ´Â ·çƾ´ÜÀ§·Î ¸¸µé¾î Áö°Ô µÈ´Ù. Á» ±Ô¸ðÀÖ´Â ÇÁ·Î±×·¥µéÀº ¼ö¹é¿¡¼ ¼öõÀÇ ÀÌ·¯ÇÑ Á¶±×¸¶ÇÑ ÇÔ¼öµé·Î ÀÌ·ç¾îÁö°Ô µÈ´Ù. ÀÌ·¯ÇÑ ÇÔ¼öµé Áß¿¡´Â °³¹ßÀÚ°¡ Çʿ信 ÀÇÇØ¼ ±×¶§ ±×¶§ ¸¸µé¾î Áö´Â °Íµéµµ ÀÖÁö¸¸ ½Ã½ºÅÛ¿¡ ÀÇÇØ¼ Á¦°øµÇ´Â ÇÔ¼öµéµµ ÀÖ´Ù. ´ç¿¬ÇÏÁö¸¸ ÀÌ¹Ì ¸¸µé¾îÁø ÇÔ¼ö´Â »ç¿ëÀÚ°¡ ´Ù½Ã ¸¸µé¾î¼ »ç¿ëÇÒ ¼ö ¾ø´Ù. ÀÌ·± ½Ã½ºÅÛ¿¡¼ Á¦°øÇÏ´Â ÇÔ¼öµéÀ» ¿ø½Ã(primitive)ÇÔ¼ö¶ó°í ºÎ¸¥´Ù. ¿¹¸¦ µé¾î ±×·¡ÇÈ À¯Àú ÀÎÅÍÆäÀ̽º¸¦ Áö¿øÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù°í °¡Á¤ÇØ º¸ÀÚ. ¿©±â¿¡´Â ¸Þ´º¸¦ »ý¼ºÇϱâ À§ÇÑ ÇÔ¼ö°¡ ÀÖÀ» °ÍÀÌ´Ù. ÀÌ ÇÔ¼öµéÀº ±ÛÀÚ¸¦ ¾²°Å³ª, ¾ÆÀÌÄÜÀ» ¹èÄ¡Çϰųª, ¹è°æÀÇ »öÀ» ¼³Á¤Çϰųª ¸¶¿ì½ºÀÇ À§Ä¡¸¦ °è»êÇÏ´Â ÇÔ¼öµéÀÌ ÀÖÀ» °ÍÀÌ´Ù. ±×¶ó³ª ÀÌ·¯ÇÑ ÇÔ¼öµé ¿Ü¿¡µµ ±âº»ÀûÀ¸·Î ¼±À» ¸¸µé°Å³ª, Á¡À» Âï°Å³ª ÇÏ´Â µîÀÇ °¡Àå ±âº»ÀûÀÎ ÇÔ¼öµéÀÌ ÀÖÀ» °ÍÀ̰í À̰͵éÀº ¿î¿µÃ¼Á¦ ¼öÁØ¿¡¼ Áö¿øÇÏ°Ô µÉ°ÍÀÌ´Ù. ÀÌ·¯ÇÑ ÇÔ¼ö¸¦ primitiveÇÔ¼ö¶ó°í º¸¸é µÈ´Ù. ÃÖÁ¾ÀûÀ¸·Î ¿©·¯ºÐÀÌ Å« ±Ô¸ðÀÇ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù¸é ÀÌ·¯ÇÑ primitiveÇÔ¼öµéÀ» °¡Áø ÀÛÀº (»ç¿ëÀÚ °¡ ¸¸µç)ÇÔ¼öµéÀÇ ¸ðÀÓÀ¸·Î ÀÌ·ç¾î Áú °ÍÀÌ´Ù. ÀÌ»ó ÀÏ¹Ý GUI ¾ÖÇø®ÄÉÀ̼ÇÀ» ¿¹·Î µé¾î¼ ¼³¸íÇߴµ¥, GUI ¿¡¼ÀÇ primitive´Â ¾î¼Àºí¸®¿¡¼´Â ½Ã½ºÅÛÄÝÀÌ´Ù. ¿©±â¿¡¼´Â ½Ã½ºÅÛÄÝ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀ» ´Ù·çÁø ¾ÊÀ» °ÍÀÌ´Ù. ½Ã½ºÅÛ ÄÝ¿¡ ´ëÇÑ ³»¿ëÀº ¸®´ª½º ½Ã½ºÅÛ ÄÝ Äü ·¹ÆÛ·±½º¿Í ¸®´ª½º ¾î¼Àºí¸® ÇÏ¿ìÅõ¸¦ Âü°íÇØ º¸±â ¹Ù¶õ´Ù. 4.2. ÇÔ¼ö ¸¸µé±âÇÔ¼ö´Â ´ÙÀ½°ú °°Àº ¿ä¼Òµé¿¡ ÀÇÇØ¼ ¸¸µé¾îÁø´Ù.
º¯¼ö¸¦ ¸¸µé¾î¼ ÀúÀåÇϰí, ÀÎÀÚ¸¦ »ç¿ëÇϰí, °ªÀ» ¸®ÅÏÇϴ ǥÇöÇÏ´Â ¹æ¹ýÀº ¾ð¾î¸¶´Ù ´Ù¸£±ä ÇÏÁö¸¸ ¾ð¾î¿¡ °ü°è¾øÀÌ °øÅëÀûÀ¸·Î »ç¿ëµÇ¾î Áø´Ù. ±×·¯¹Ç·Î ¾ð¾î¿¡ °ü°è¾øÀÌ ÀϹÝÀûÀ¸·Î Ç¥ÇöÀÌ °¡´ÉÇÒ °ÍÀÌ´Ù. ÀÌ·¯ÇÑ Ç¥ÇöÀÇ ¹æ¹ýÀ» calling convention¶ó°í ºÎ¸¥´Ù. calling conventionÀº ¸Å¿ì ´Ù¾çÇϸç, ÀڽŸ¸ÀÇ calling conventionÀ» ¸¸µé¾î¼ »ç¿ëÇÒ ¼ö µµ ÀÖ´Ù. ±×·¸±ä ÇÏÁö¸¸ ´Ù¸¥ ¸¸µé¾îÁø ÇÔ¼ö°¡ ´Ù¸¥ ¾ð¾î·Î Æ÷ÆÃµÇ´Â °ÍÀ» °í·ÁÇØ¾ß µÇ´Â °æ¿ìµµ ÀÖÀ¸¹Ç·Î °¡´ÉÇϸé Ç¥ÁØÀûÀÎ calling conventionÀ» µû¸£´Â °ÍÀÌ ÁÁÀ» °ÍÀÌ´Ù. ¿©±â¿¡¼´Â C ¾ð¾îÀÇ calling conventionÀ» µû¸¦ °ÍÀÌ´Ù. ¿Ö³ÄÇÏ¸é °¡Àå ³Î¸® »ç¿ëµÇ¾îÁö´Â ¾ð¾îÀÌ¸ç ¶ÇÇÑ °¡Àå ¸¹Àº ¿¹Á¦ Äڵ带 °¡Áö°í Àֱ⠶§¹®ÀÌ´Ù.
4.3. C calling conventionÀ» ÀÌ¿ëÇÑ ¾î¼Àºí¸®¾î ÇÔ¼ö¼³¸í¸¸¾à ´ç½ÅÀÌ ÄÄÇ»ÅÍÀÇ ½ºÅÃÀÌ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö¿¡ ´ëÇÑ ÀÌÇØ¸¦ °¡Áö°í ÀÖÁö ¾Ê´Ù¸é ¾î¼Àºí¸®¾î¿¡¼ ÇÔ¼ö¸¦ ÀÛ¼ºÇÒ ¼ö ¾øÀ» °ÍÀÌ´Ù. ¿ì¸®°¡ ÄÄÇ»ÅÍ¿¡¼ ÇÁ·Î±×·¥À» ½ÇÇà½Ã۸é, ÇÁ·Î±×·¥Àº °¢°¢ÀÇ ÇÔ¼ö¸¦ ¼öÇàÇϱâ À§Çؼ ½ºÅÿµ¿ªÀ» È®º¸ÇÑ´Ù. ½ºÅÃÀº ¸»±×´ë·Î ´õ¹Ì¶õ ¶æÀε¥, ´ç½ÅÀÇ ÀÛ¾÷Ã¥»óÀ§¿¡ ³õÀΠó¸®ÇØ¾ßµÉ ¼·ù´õ¹Ì¸¦ ¿¬»óÇÏ¸é µÈ´Ù. ´ç½ÅÀº ó¸®ÇؾßÇÒ ¼·ù¸¦ ¼·ù´õ¹Ì¿¡ ¿Ã·Á³õ°í ó¸®ÇØ¾ßµÉ °æ¿ì °¡Àå À§¿¡ ÀÖ´Â ¼·ùºÎÅÍ Ã³¸®ÇÏ°Ô µÉ°ÍÀÌ´Ù. ó¸®µÈ ¼·ù´Â ´Ù¸¥ ÇÑÂÊÀ¸·Î Ä¡¿ì°Å³ª.. ±âºÐ³ª»Û ¼·ùÀÇ °æ¿ì ½º·¹±âÅë¿¡ ¹ö¸± °ÍÀÌ´Ù. ÄÄÇ»Å͵µ ¸¶Âù°¡Áö·Î ÀÌ·¯ÇÑ ½ºÅÃÀ» °¡Áö°í ÀÖ´Ù. ÄÄÇ»ÅÍ¿¡¼ ½ºÅÃÀº ¸Þ¸ð¸®ÀÇ Ã³À½À§Ä¡¿¡ Á¸ÀçÇÑ´Ù. ´ç½ÅÀº pushl¸í·ÉÀ» ÀÌ¿ëÇØ¼ ½ºÅÃÀÇ °¡Àå À§¿¡ °ªÀ» ¹Ð¾î ³ÖÀ» ¼ö ÀÖ´Ù. ½ºÅÃÀÇ °¡Àå À§¿¡´Â ·¹Áö½ºÅÍ¿Í ´Ù¸¥ °ªµéÀÌ µé¾î °¥ ¼ö ÀÖ´Ù. ¿ì¸®´Â ¸»ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. "¿Ö ÇÏÇÊ °¡Àå À§¿¡ ÀúÀåÇØ¾ßÇÏÁÒ?" ±× ÀÌÀ¯´Â °£´ÜÇÏ´Ù. Á¢½Ã¸¦ ¾Ä±â À§Çؼ ½×¾Æ µÎ¾úÀ» ¶§ À§¿¡¼ ºÎÅÍ ²¨³»¼ ¾Ä´Â ÀÌÀ¯¸¦ »ý°¢Çغ¸¸é µÈ´Ù. ȤÀº Ã¥»ó¿¡ ½×¿©ÀÖ´Â ¼·ùÀÇ Ã³¸®¸¦ »ý°¢ÇØ º¸¶ó. À§¿¡¼ ºÎÅÍ ²¨³»¾î¼ ó¸®ÇÏ´Â°Ô ¾Æ·¡, ȤÀº Áß°£¿¡¼ ²¨³»¾î¼ ó¸®ÇÏ´Â °Íº¸´Ù ÈξÀ ½±´Ù. ÄÄÇ»ÅÍ¿¡¼ÀÇ ¸Þ¸ð¸® °ü¸® ¿ª½Ã À§¿¡ÀÖ´Â °ÍºÎÅÍ ²¨³»¾î¼ °¡Á®¿À´Â°Ô ±¸Á¶»ó ÈξÀ ½±µµ·Ï µÇ¾î ÀÖ´Ù. pushlÀ» ÀÌ¿ëÇØ¼ ½ºÅÃÀÇ °¡Àå À§¿¡ µ¥ÀÌÅ͸¦ ¿Ã·È´Ù¸é, ÀÌ µ¥ÀÌÅÍ´Â poplÀ» ÅëÇØ¼ °¡Á®¿Ã ¼ö ÀÖ´Ù. popl¸í·ÉÀ» ÀÌ¿ëÇÏ¸é ½ºÅÃÀÇ °¡Àå À§¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ °¡Á®¿À°Ô µÈ´Ù. ½ºÅÿ¡ °ªÀ» ¹Ð¾î ³Ö°ÔµÇ¸é ÇöÀç ½ºÅÃÀÇ Á¦ÀÏ ÀºÎºÐÀÇ ÁÖ¼Ò¸¦ °è»êÇØ¼ ±× À§Ä¡¿¡ °ªÀ» Ãß°¡ÇÑ´Ù. ½ºÅÃÀÇ Á¦ÀÏ À§ÀÇ À§Ä¡°ªÀº %esp ·¹Áö½ºÅ͸¦ ÅëÇØ¼ ¾Ë¾Æ¿Ã ¼ö ÀÖ´Ù. Âü°í·Î ½ºÅÃÀº ¾ðÁ¦³ª ¿¬¼ÓÀûÀ¸·Î À§Ä¡ÇÏ°Ô µÇ¹Ç·Î µ¥ÀÌÅÍÀÇ Å©±â¸¸ ¾Ë°í ÀÖ´Ù¸é À§Ä¡¸¦ Á¤È®ÇÏ°Ô °è»êÇÒ ¼ö ÀÖ´Ù. pushlÀ» ÅëÇØ¼ ½ºÅØ¿¡ ¾î¶² °ªÀ» ³Ö°Ô µÇ¸é ½ºÅÃÀÇ Á¦ÀÏ À§¸¦ °¡¸£Å°´Â Æ÷ÀÎÅÍ¿¡ 4°¡ ´õÇØÁ®¾ß ÇÑ´Ù. °í·Î %esp¿¡¼ 4¸¦ »©¸é °¡Àå ÃÖ±Ù¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ Àоî¿Ã ¼ö ÀÖ°Ô µÈ´Ù. (ÀúÀåµÇ´Â µ¥ÀÌÅÍ´Â ¿öµå(word)Áï 4¹ÙÀÌÆ®ÀÓÀ» ±â¾ïÇ϶ó). ¸¸¾à ½ºÅÃÀ¸·Î ºÎÅÍÀÇ µ¥ÀÌÅÍ »èÁ¦´Â popl¸í·ÉÀ» ¼öÇàÇÏ¸é µÈ´Ù. pushl°ú poplÀº ÇϳªÀÇ ¿ÀÆÛ·£µå¸¸À» °¡Áø´Ù. ¸¸¾à ½ºÅÃÀÇ °¡ÀåÀ§¿¡ Á¢±ÙÇÏ±æ ¿øÇÑ´Ù¸é, %esp ·¹Áö½ºÅ͸¦ indirect ¾îµå·¹½º ¸ðµå·Î Á¢±ÙÇÏ¸é µÈ´Ù. ´ÙÀ½Àº ½ºÅÃÀÇ °¡Àå À§¿¡ ÀÖ´Â °ªÀ» %eax ·¹Áö½ºÅÍ·Î ¿Å±â´Â ¿¹ÀÌ´Ù.
C¾ð¾îÀÇ calling convention¿¡¼ ½ºÅÃÀº ÇÔ¼öÀÇ ·ÎÄú¯¼ö, ÀÎÀÚ, ¸®ÅÏÁÖ¼ÒµéÀ» ±¸ÇöÇϴµ¥ Áß¿äÇÏ°Ô »ç¿ëµÈ´Ù.
À̹øÀåÀ» ÅëÇØ¼ ¿ì¸®´Â Àü¿ªº¯¼ö¿Í static º¯¼ö¸¦ ¸Þ¸ð¸®»ó¿¡¼ ¾î¶»°Ô Á¢±ÙÇÒ ¼ö ÀÖ´ÂÁö¸¦ ¹è¿ü´Ù. Àü¿ªº¯¼ö¿Í staticÀÇ Â÷ÀÌÁ¡Àº static°¡ ¿ÀÁ÷ ÇÔ¼ö³»¿¡¼¸¸ »ç¿ëµÇ°í Àü¿ªº¯¼ö´Â ¿©·¯ÇÔ¼ö¿¡¼ »ç¿ëµÉ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. ´Ù¸¥ ¸ðµç ¾ð¾î¿¡¼¿Í ¸¶Âù°¡Áö·Î ¾î¼Àºí¸®¾î¿¡¼µµ ÀÌµé º¯¼ö¸¦ ´Ù·ç´Â ¹æ¹ýÀº µ¿ÀÏÇÏ´Ù. ÇÔ¼ö´Â ½ÇÇàµÉ¶§ ±âº»ÀûÀ¸·Î 3°¡ÁöÀÏÀ» ÇØÁÖ¾î¾ß ÇÑ´Ù. ù¹øÂ°·Î %eax¿¡ ¸®ÅÏ °ªÀ» ÀúÀåÇÑ´Ù. µÎ¹øÂ°·Î È£ÃâµÇ±â Àü¿¡ ½ºÅÃÀ» ÃʱâÈ(reset)ÇÑ´Ù. ¸¶Áö¸·À¸·Î ¸®ÅÏÀÇ Á¦¾î´Â ret ¸í·ÉÀ» ÅëÇØ¼ ÀÌ·ç¾îÁø´Ù. À̰ÍÀº ½ºÅÃÀÇ Á¦ÀÏ À§ÀÇ °ªÀ» °¡Á®¿À´Â(pop)ÇÏ´Â ÀÏÀ» Çϰí, ¸í·ÉÀÇ Æ÷ÀÎÅÍÀÎ %eip¸¦ ¼³Á¤ÇÑ´Ù. ÇÔ¼ö´Â ¸®ÅÏÇÒ ¶§ ±×°ÍÀ» È£ÃâÇÑ Äڵ忡°Ô Á¦¾î±ÇÀ» µÇµ¹·Á ÁÖ¾î¾ß¸¸ Çϴµ¥, ±×·¯±â À§Çؼ´Â ¹Ýµå½Ã ÀÌÀüÀÇ ½ºÅÃÇÁ·¹ÀÓÀ» º¹±¸ÇØ ÁÖ¾î¾ß¸¸ ÇÑ´Ù. ±×·¯³ª ret ¸í·ÉÀº ÀÌ·¯ÇÑ ÀÏÀ» ÇÏÁö ¾Ê´Â´Ù. ¿Ö³ÄÇÏ¸é ¿ì¸®ÀÇ ÃÖ±Ù ½ºÅÃÇÁ·¹ÀÓ¿¡ ÀÖ´Â ¸®ÅÏ ÁÖ¼Ò´Â ½ºÅÃÀÇ Á¦ÀÏ À§¸¦ °¡¸®Å°Áö ¾Ê±â ¶§¹®ÀÌ´Ù. ±×·¯¹Ç·Î ÇÔ¼ö¸¦ ¼öÇàÇϱâ Àü¿¡ ¸®ÅÏÇÒ ½ºÅÃÆ÷ÀÎÅÍÀÎ %esp¿Í º£À̽º Æ÷ÀÎÅÍ %ebp¸¦ ¸®¼ÂÇØÁÖ¾î¾ß ÇÑ´Ù. ±×·¯¹Ç·Î ÇÔ¼ö·Î ºÎÅÍ ¸®ÅÏÇϱâ À§Çؼ ´ÙÀ½°ú °úÁ¤ÀÌ ÇÊ¿äÇÏ°Ô µÈ´Ù.
page 47¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ÇØ¼®ÀÌ ÇÊ¿ä. 4.4. ÇÔ¼ö ¿¹Á¦ÀÌÁ¦ ½ÇÁ¦ ÇÁ·Î±×·¥¿¡¼ ¾î¶»°Ô ÇÔ¼ö¸¦ È£ÃâÇÏ´ÂÁö ¿¹¸¦ µé¾î¼ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. ¿ì¸®´Â power(°ÅµìÁ¦°ö)¿¬»êÀ» ÇÏ´Â ÀÌ´Ù. power ÇÔ¼ö´Â 2°³ÀÇ ¼ýÀÚ¸¦ ÇÊ¿ä·Î ÇÑ´Ù. ¿¹¸¦ µé¾î 2, 3ÀÌ µé¾î °¬´Ù¸é 2 * 2 * 2 ¿¬»êÀ» ÇÏ°Ô µÇ°í 8À» ¸®ÅÏÇÏ°Ô µÈ´Ù. ´ÙÀ½ ÄÚµå´Â ¿ÏÀüÇÑ ÇÁ·Î±×·¥ÀÌ´Ù. ÆÄÀÏÀÇ À̸§Àº power.s·Î ÇϰڴÙ.
À§ÀÇ Äڵ带 ÀÛ¼ºÇϰí ÄÄÆÄÀÏ ½ÃŲ´ÙÀ½ ½ÇÇà½ÃÄÑ º¸µµ·Ï ÇÏÀÚ. ±×¸®°í powerÇÔ¼ö¸¦ ´Ù¸¥ ÀÎÀÚ¸¦ ÁÖ¾î¼ È£ÃâÇØ¼ °á°ú°ªÀÌ Á¦´ë·Î ³ª¿À´ÂÁö È®ÀÎÇØ º¸µµ·Ï ÇÏÀÚ. À̶§ °á°ú°ªÀº 256À» ³Ñ±âÁö ¾Êµµ·Ï Àû´çÈ÷ ÀÎÀÚ¸¦ Á¶ÀýÇϵµ·Ï ÇØ¾ß ÇÑ´Ù. Å×½ºÆ®°¡ ³¡³µ´Ù¸é µÎ°³ÀÇ °á°ú°ªÀ» »«°ªÀ» ¸®ÅÏÇϵµ·Ï Äڵ带 ¼öÁ¤ÇØ º¸µµ·Ï ÇÏÀÚ. power ÇÔ¼ö¸¦ 3¹ø È£ÃâÇÏ°í ±× °ªÀ» ¸®ÅÏÇÏ´Â Äڵ嵵 ¸¸µé¾î º¸ÀÚ. ÇÁ·Î±×·¥ÀÇ ÄÚµå´Â ¸Å¿ì °£´ÜÇÏ´Ù. ´ç½ÅÀÌ ÀÎÀÚ¸¦ ½ºÅÿ¡ Áý¾î ³Ö°í ÇÔ¼ö¸¦ È£ÃâÇϸé, ÇÔ¼ö´Â ½ºÅà Æ÷ÀÎÅ͸¦ µÚ·Î µÇµ¹¸®°í ½ºÅÿ¡ ÀÖ´Â ÀÎÀÚ¸¦ Àоî¿Í¼ ¿¬»êÀ» ÇÏ°í °á°ú°ªÀ» %eax¿¡ ÀúÀåÇÑ´Ù. À§ ÇÁ·Î±×·¥¿¡¼´Â powÇÔ¼ö¸¦ µÎ¹ø È£ÃâÇϴµ¥, ¿ì¸®´Â ù¹øÂ° °ªÀ» ½ºÅÿ¡ ÀúÀåÇß´Ù. ÀÌÀ¯´Â ·¹Áö½ºÅÍ¿¡ ´ÜÁö Çѹø¿¡ ÇϳªÀÇ °ª¸¸ ÀúÀåµÉ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¿ì¸®´Â ù¹øÂ° powÇÔ¼ö ¸®ÅϰªÀ» ½ºÅÿ¡ ÀúÀåÇÏ°í ³ªÁß¿¡ µÎ¹øÂ° ÇÔ¼öÀÇ °á°ú°¡ ³ª¿ÔÀ»¶§ ½ºÅÃÀÇ °ªÀ» °¡Á®¿Í¼(pop) µÎ¹øÂ° °á°ú¿Í ´õÇØ¼ ¿øÇÏ´Â °á°ú¸¦ ¾ò¾î ¿Ã ¼ö ÀÖ´Ù. ÀÌÁ¦ ÇÔ¼ö ÄÚ½ºµå¿¡ ´ëÇØ¼ ¾Ë¾Æº¸ÀÚ. ÇÔ¼ö¿¡¼ ÁÖ¸ñÇØ¾ßµÉ ºÎºÐÀº ÇÔ¼ö°¡ ¾î¶»°Ô ¼±¾ðµÇ´ÂÁö, ±×¸®°í ÀÎÀÚ°¡ ¾î¶»°Ô ³Ñ¾î°¡°í ¸®ÅϰªÀ» ³Ñ°ÜÁÖ´ÂÁö ÇÏ´Â ºÎºÐÀÌ´Ù. ÀÌ·¯ÇÑ ÀԷºκаú Ãâ·ÂºÎºÐÀº ÇÁ·Î±×·¡¸Ó°¡ ÇÔ¼ö¸¦ ¼³°èÇÒ ¶§ °¡Àå ÀÏÂ÷ÀûÀ¸·Î °í·ÁÇÏ´Â ºÎºÐÀ¸·Î ÈçÈ÷ ÇÔ¼öÀÇ ÀÎÅÍÆäÀ̽º(Interface)¶ó°í ÇÑ´Ù. ÀÎÅÍÆäÀ̽º¸¦ Á¦´ë·Î ±¸¼ºÇϱâ À§Çؼ ÇÁ·Î±×·¡¸Ó´Â ½ºÅðú %eax¿¡ ´ëÇØ¼ ÀÌÇØÇϰí ÀÖ¾î¾ß ÇÑ´Ù. ½ºÅÃÀº ÀÔ·Â, %eax´Â Ãâ·Â(¸®ÅÏ)À» À§Çؼ »ç¿ëµÈ´Ù. °¡Àå ¸ÕÀú ÇØ¾ß ÇÒÀÏÀº ÇÔ¼öÀÇ À̸§À» Á¤ÇÏ´Â ÀÏÀÌ´Ù.
°ÅµìÁ¦°ö ÇÔ¼ö¸¦ º¸¸é imul¿Í decl°¡ µîÀåÇÑ´Ù. imulÀº °ö¼À¿¬»êÀ» ÇÑ´Ù. ¿¬»êÀÇ °á°ú´Â µÎ¹øÂ° ¿ÀÆÛ·£µå¿¡ ÀúÀåµÈ´Ù. declÀº ·¹Áö½ºÅÍÀÇ °ªÀ» 1°¨¼Ò½ÃŲ´Ù. ¸í·É¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº Appendix B¸¦ Âü°íÇϱ⠹ٶõ´Ù. 4.5. Àç±Í ÇÔ¼ö´ÙÀ½ ÇÁ·Î±×·¥Àº ¸Ó¸®¸¦ Á»´õ ±¼·ÁÁà¾ß ÇÑ´Ù. ÀÌ ÇÁ·Î±×·¥Àº ÆÑÅ丮¾ó(factorial)À» ±¸ÇÑ´Ù. ÆÑÅ丮¾ó ¿¬»êÀº ÀڽŰú 1»çÀÌÀÇ ¸ðµç ¼ýÀÚ¸¦ °öÇÏ´Â ¿¬»êÀ» ÇÑ´Ù. ¿¹¸¦ µé¾î¼ 7ÀÇ ÆÑÅ丮¾óÀº 7*6*5*4*3*2*1À̰í 4ÀÇ ÆÑÅ丮¾óÀº 4*3*2*1ÀÌ´Ù. ÆÑÅ丮¾ó ¿¬»êÀ» ÇÒ¶§ ¿©·¯ºÐÀº ÇϳªÀÇ ±ÔÄ¢À» ¹ß°ßÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. 4ÆÑÅ丮¾óÀÇ °æ¿ì 3ÆÑÅ丮¾óÀÌ 4¹ø ¹ß»ýÇÏ´Â °ÍÀ̰í, 3ÆÑÅ丮¾óÀº 2ÆÑÅ丮¾óÀÌ 3¹ø ¹ß»ýÇϰí, 2ÆÑÅ丮¾óÀº 1ÆÑÅ丮¾óÀÌ 2¹ø ¹ß»ýÇÑ´Ù. 1ÆÑÅ丮¾óÀº 1¹ø¹ß»ýÀ¸·Î ³¡³´Ù. ÀÌ·¯ÇÑ ÇüÅÂÀÇ Á¤ÀǸ¦ Àç±Í(recursive)Á¤ÀÇ ¶ó°í ÇÑ´Ù. ÆÑÅ丮¾ó ÇÔ¼ö¸¦ ±¸ÇöÇÒ¶§ ÀÌ Àç±Í Á¤ÀǸ¦ »ç¿ëÇÏ¸é ¹®Á¦¸¦ ´õ ½±°Ô Ç® ¼ö ÀÖ´Ù. ÆÑÅ丮¾ó ÇÔ¼ö´Â ÇÔ¼öÀÚ½ÅÀ» Æ÷ÇÔÇÏ´Â Àç±ÍÀû ±¸Á¶¸¦ °¡Áø´Ù. ÇÔ¼ö°¡ ÇÔ¼ö ÀÚ½ÅÀ» Æ÷ÇÔÇÑ´Ù¸é ¹«ÇÑÈ÷ ÀÚ½ÅÀ» È£ÃâÇÒ ¼öµµ ÀÖÀ¸¹Ç·Î base case °¡ Á¤ÀǵǾî ÀÖ¾î¾ß¸¸ ÇÑ´Ù. base case´Â Àç±Í°¡ Á¾·áµÇ´Â ½ÃÁ¡À» °áÁ¤ÇÑ´Ù. base case°¡ ¾ø´Ù¸é ÇÔ¼ö´Â ¹«ÇÑÈ÷ È£ÃâµÉ °ÍÀÌ°í °á±¹ stack °ø°£À» ¸ðµÎ ¼ÒºñÇÏ°Ô µÉ °ÍÀÌ´Ù. ÆÑÅ丮¾óÀÇ °æ¿ì base case´Â ¼ýÀÚ 1ÀÌ µÈ´Ù. ÆÑÅ丮¾ó ÇÔ¼ö¸¦ Àç±ÍÈ£ÃâÇÏ°Ô µÇ¸é ¹øÈ£´Â 1¾¿ ÁÙ¾îµé°í base case¿Í °°Àº ¼ö°¡ µÈ´Ù¸é ÇÔ¼ö¸¦ ºüÁ®³ª¿À°Ô µÈ´Ù.
¾î¼Àºí, ¸µÅ© °úÁ¤À» °ÅÃļ ½ÇÇà½ÃŰ°í ¸®Åϰá°ú¸¦ È®ÀÎÇÑ´Ù.
¿©·¯ºÐÀÌ C¿Í °°Àº ¾ð¾î¸¦ ÅëÇØ¼ Àç±ÍÈ£ÃâÀ» °æÇèÇØ º¸Áö ¾Ê¾Ò´Ù¸é À§ÀÇ Äڵ带 ÀÌÇØÇÏ´Â µ¥¿¡ ¾à°£ÀÇ ¾î·Á¿òÀÌ ÀÖÀ» ¼öµµ ÀÖ´Ù. ÀÌÁ¦ ¾î¶»°Ô ÀÌ·¯ÇÑ °è»êÀÌ °¡´ÉÇÑÁö¸¦ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ.
pushl ¸í·ÉÀº °ªÀ» ½ºÅÃÀÇ °¡ÀåÀ§¿¡ ¹Ð¾î ³Ö´Â´Ù. call¸í·ÉÀº ÇÔ¼ö¸¦ È£ÃâÇϱâ À§Çؼ »ç¿ëÇÑ´Ù. ´ÙÀ½ ÁÙÀ» ºÐ¼®ÇØ º¸µµ·ÏÇÏÀÚ.
´ÙÀ½ %eax¸¦ %ebx·Î º¹»çÇÑ´Ù. %eax´Â factorialÇÔ¼öÀÇ ¸®ÅϰªÀÌ´Ù. À̰æ¿ì ¸®ÅϰªÀº ÆÑÅ丮¾ó ¿¬»ê°á°úÀÌ´Ù. ÆÑÅ丮¾ó ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ÀÎÀÚ¸¦ 4¸¦ ÁáÀ¸¹Ç·Î ¸®ÅϰªÀº 24°¡ µÉ°ÍÀÌ´Ù. ¸®ÅϰªÀº ¾ðÁ¦³ª %eax¿¡ ÀúÀåµÈ´Ù´Â °ÍÀ» ±â¾ïÇϱ⠹ٶõ´Ù. ¿ì¸®´Â ÇÁ·Î±×·¥ÀÌ Á¾·áÇÒ ¶§ ¿î¿µÃ¼Á¦¿¡ 24¸¦ µÇµ¹·Á ÁÖ¾î¾ßÇÑ´Ù. ¸®´ª½ºÀÇ °æ¿ì ÇÁ·Î±×·¥ÀÇ Á¾·á°ªÀº %eax°¡ ¾Æ´Ñ %ebx¿¡ ÀúÀåÇÑ´Ù. ÀÌÁ¦ exit() ½Ã½ºÅÛ È£ÃâÀ» ½ÇÇàÇÏ¸é µÈ´Ù. ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ¿ì¸®´Â Å©°í º¹ÀâÇÑ ÇÁ·Î±×·¥À» ¸¸µé ¶§ »ó´ëÀûÀ¸·Î °£´ÜÇϰí ÀÌÇØÇϱ⠽¬¿î ¿©·¯°³ÀÇ Á¶°¢À¸·Î Äڵ带 ¸¸µé ¼ö ÀÖ´Â ÀÕÁ¡À» ¾òÀ» ¼ö ÀÖ´Ù. ½ÇÁúÀûÀ¸·Î ¾ÆÁÖ °£´ÜÇÑ °æ¿ì¸¦ Á¦¿ÜÇϰí, ´ëºÎºÐÀÇ ÇÁ·Î±×·¥Àº ¿©·¯°³ÀÇ ÇÔ¼ö·Î ÀÌ·ç¾îÁø´Ù. À§ÀÇ ¿¡Á¦¸¦ ÅëÇØ¼ ¿ì¸®´Â ÇÔ¼ö¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö ¾Ë°Ô µÇ¾ú´Ù. C¿¡¼¿Í ¸¶Âù°¡Áö·Î ¾î¼Àºí¸®¾î¿¡¼µµ ÇÔ¼ö´Â ¼±¾ð°ú Á¤ÀÇ ºÎ·Î ³ª´µ°Ô µÈ´Ù.
factorialÇÔ¼öÀÇ Ã¹¶óÀο¡´Â ´ÙÀ½°ú °°Àº Äڵ尡 µé¾î°¡ ÀÖ´Ù.
´ÙÀ½ ¶óÀο¡¼ ÇÔ¼öÀÇ ÀÎÀÚ°¡ base case¿¡ µµ´ÞÇß´ÂÁö °Ë»çÇÑ´Ù. ¸¸¾à base case Áï 1À̶ó¸é ÆÑÅ丮¾ó ¿¬»êÀ» ³¡³»°í end_factorial·Î Á¡ÇÁ ÇÑ´Ù.
|
|
||||||||||||||||||||||||||
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|