ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>ProgrammingGroundUp



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
[http]ProgrammingGroundUp ¿ø¹®

HTML º¯È¯¹®¼­

°³ÀÎÀûÀ¸·Î ¾î¼À¿¡ Àͼ÷ÇÏÁö ¾Ê±â ¶§¹®¿¡ ¹ø¿ªÁß ÀÌÇØµÇÁö ¾Ê´Â ºÎºÐÀº ´ëÃæ ¶¼¿ì±âµµ ÇÒ°ÍÀÌ´Ù. ¶¼¿î ºÎºÐÀº ³ªÁß¿¡ ÀÌÇØ°¡ µÇ¸é Á¦´ë·Î ¹ø¿ªÇÏ´Â ¹æ¹ýÀ» ¼±ÅÃÇÒ °ÍÀÌ´Ù.

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> 
<article lang="ko"> 
 
<articleinfo> 
    <title>Programming from the Ground Up</title> 
 
    <author> 
        <surname>À±»ó¹è</surname> 
 
        <affiliation> 
            <address> 
                <email>dreamyun@yahoo.co.kr</email> 
            </address> 
        </affiliation> 
    </author> 
    <revhistory> 
        <revision> 
            <revnumber>0.8</revnumber> 
            <date>2004³â 2¿ù 09ÀÏ 19½Ã</date> 
            <revremark>ÃÖÃÊ ¹®¼­ÀÛ¼º</revremark> 
        </revision> 
    </revhistory> 
</articleinfo> 
<abstract> 
    <para> 
        ÀÌ ¹®¼­´Â ProgrammingGroundUpÀÇ ¹ø¿ª ¹®¼­´Ù. °èȹÀ¸·Î´Â ÇÏ·ç Çѽ𣾿À» 
        ¹ø¿ª¿¡ ÅõÀÚÇÒ »ý°¢ÀÌÁö¸¸ »ý°¢Ã³·³ Àß µÉ·±Áö´Â ¸ð¸£°Ú´Ù. ´©±º°¡ Âü¿©ÇÏ´Â  
        »ç¶÷ÀÌ ÀÖ´Ù¸é ÈξÀ ÁøÇàÀÌ »¡¶óÁú °ÍÀ̶ó°í »ý°¢µÈ´Ù.  
    </para> 
    <para> 
        ¹ø¿ªÀº ¸Å¿ì ´À½¼ÇÏ°Ô ÀÌ·ç¾îÁú °ÍÀÌ´Ù. Áï ÇÊ¿ä¾ø´Ù°í »ý°¢ µÇ´Â ºÎºÐÀº  
        °ú°¨È÷ »ý·«ÇÒ ¼ö ÀÖÀ¸¸ç, ºñ½ÁÇÑ ´Ù¸¥ ¸»·Ð ¹Ù²ð ¼ö ÀÖÀ¸¸ç Ãß°¡ µÉ ¼öµµ  
        ÀÖ´Ù. ¹ø¿ª ¼ø¼­¿ª½Ã °¢ÀåÀÇ ¼ø¼­¸¦ µû¸£Áö´Â ¾ÊÀ» ¼öµµ ÀÖ´Ù(°ü½ÉÀÖ´Â 
        ºÎºÐºÎÅÍ ¹ø¿ªÀÌ ÀÌ·ç¾îÁú °ÍÀÌ´Ù).   
    </para> 
</abstract> 
 
<section> 
    <title>¼Ò°³</title> 
    <section> 
        <title>ÇÁ·Î±×·¡¹ÖÀÇ ¼¼°è·Î</title>     
        <para> 
        </para> 
    </section> 
    <section> 
        <title>»ç¿ëÇÏ´Â µµ±¸</title> 
        <para> 
            ÀÌÃ¥Àº x86 ÇÁ·Î¼¼½º±â¹ÝÀÇ GNU/Linux ¿î¿µÃ¼Á¦¿¡¼­ ¾î¼Àºí¸®¾î¸¦  
            ÀÌ¿ëÇÑ ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇØ¼­ ´Ù·é´Ù. ÀÌ·± ÀÌÀ¯·Î ÀÌÃ¥ÀÇ ¸ðµç ¿¹Á¦¿Í 
            ÀÌ¿¡ ´ëÇÑ ¼³¸íÀº GNU/Linux»ó¿¡¼­ GCCµµ±¸¸¦ ÀÌ¿ëÇØ¼­ ÀÌ·ç¾îÁú °ÍÀÌ´Ù. 
            ÀÌ´Â ¿©·¯ºÐÀÌ GNU/Linux¿Í GCCµµ±¸¿¡ ´ëÇÑ ÀÌÇØ°¡ ºÎÁ·ÇÒ°æ¿ì Ã¥ÀÇ ³»¿ëÀ»  
            ÀÌÇØÇϴµ¥ ÀÖ¾î ¹®Á¦°¡ µÉ ¼ö ÀÖÀ½À» ÀǹÌÇÑ´Ù. ¸¸¾à Linux¿Í GCC¿¡ »ý¼Ò 
            ÇÏ´Ù¸é ÀÌÃ¥À» Àбâ Àü¿¡ http://rute.sourceforge.netÀÇ ¹®¼­¸¦ ÀÐ¾î  
            º¸±â ¹Ù¶õ´Ù. ¿µ¹®À» º¸±â ½È´Ù¸é ¼­Á¡¿¡¼­ ¸Å¿ì Àß ¹ø¿ªµÈ ¸¹Àº ¸®´ª½º °ü·Ã 
            ¼­ÀûÀ¸·Î ¸®´ª½º¿¡ ´ëÇÑ ½ºÅ͵𸦠´ë½ÅÇÒ ¼öµµ ÀÖ´Ù.  
        </para> 
        <para> 
            ¸®´ª½º °ü·Ã ¹®¼­¿Í Ã¥Àº ºÐ¸í ¸¹Àº µµ¿òÀ» ÁÖ±ä ÇÏÁö¸¸ ±×¶§ ±×¶§ ´ÚÄ¡´Â  
            ½Ç½Ã°£¼ºÀÇ Àǹ®Á¡µîÀ» ÇØ°áÇϰí Ã¥¿¡¼­´Â ¾ò±â Èûµç µµ¿òÀ» ¾ò±â  
            ¿øÇÑ´Ù¸é ¸®´ª½º À¯Àú ±×·ìÀ» Ȱ¿ëÇÏ¸é µÈ´Ù.  
            <ulink url="http://www.kldp.org">kldp</ulink>¿Í  
            <ulink url="http://www.joinc.co.kr">joinc</ulink>,   
            <ulink url="http://www.gentoo.or.kr">gentoo</ulink>¿Í °°Àº »çÀÌÆ®¸¦  
            ÀÌ¿ëÇϱ⠹ٶõ´Ù. Á»´õ ½Ç½Ã°£ÀÇ µµ¿òÀ» ¿øÇÑ´Ù¸é irc¸¦ ÀÌ¿ëÇϱ⠹ٶõ´Ù.    
        </para> 
        <para> 
            ¿©±â¿¡ ÀÖ´Â ÇÁ·Î±×·¥µéÀº RedHat Linux 9.0, Kernel 2.6.x ȯ°æ¿¡¼­  
            ÀÛ¼ºµÇ°í Å×½ºÆ®µÉ °ÍÀÌ´Ù. ´Ù¸¥ ¹èÆ÷ÆÇÀ» »ç¿ëÇϰí ÀÖ´Ù°í ÇØ¼­  
            °ÆÁ¤ÇÒ ÇÊ¿ä´Â ¾øÀ» °ÍÀÌ´Ù. ÆÐŰÁö °ü¸®, ½Ã½ºÅÛ °ü¸®¿Í °ü·ÃµÈ »çÇ×µéÀ»  
            Á¦¿ÜÇϰí´Â °ÅÀÇ 100% ȣȯÀ» Àå´ãÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.    
        </para> 
        <para> 
            ¿©·¯ºÐÀÇ PC¿¡ Á÷Á¢ ¸®´ª½º¸¦ ¼³Ä¡Çؼ­ °øºÎ¸¦ ÇÏ´Â°Ô °¡Àå ÁÁÀº ¹æ¹ýÀÌ±ä  
            ÇÏÁö¸¸ ÀÌ°Ô ¿©ÀÇÄ¡ ¾ÊÀ» °æ¿ì ¸®´ª½º °èÁ¤À» ¾òÀ» ¼ö ÀÖ´Â ½Ã½ºÅÛÀ»  
            ¼ö¼Ò¹®ÇØ º¸±â ¹Ù¶õ´Ù. ¿©·¯ºÐ ÁÖÀ§ÀÇ ¸®´ª½º ½Ã½ºÅÛÀ» °¡Áö°í Àִ ģÇÑ  
            Ä£±¸¿¡°Ô ¹äÇѳ¢ »çÁÖ°í Àý´ë ½Ã½ºÅÛ¿¡¼­ ÀÌ»óÇÑ ÇൿÀ» ÇÏÁö ¾Ê°Ú´Ù°í 
            ´ÙÁüÇØ ÁØ´Ù¸é ½±°Ô ¾òÀ» ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ·¯ÇÑ Ä£±¸°¡ ¾ø´Ù¸é  
            ¾î¿ ¼ö ¾ø´Ù. ¸®´ª½º¸¦ ¼³Ä¡Çϱ⠹ٶõ´Ù. À§¿¡¼­ ¾ð±ÞÇß´ø ¸®´ª½º À¯Àú  
            ¸ðÀӵ¼­ ½© °èÁ¤À» ¾òÀ» ¼öµµ ÀÖ°ÚÁö¸¸ ¿©·¯ºÐÀÌ ¿À·£½Ã°£µ¿¾È  
            À¯Àú ¸ðÀÓ¿¡¼­ Ȱµ¿À» ÇØ¼­ ÃæºÐÇÑ ½Å·Ú¸¦ ½×Àº °æ¿ì°¡ ¾Æ´Ï¶ó¸é °èÁ¤À»  
            ¾ò´Â°Ç ¸Å¿ì Èûµç ÀÏÀÌ µÉ°ÍÀÌ´Ù.   
        </para> 
        <para> 
            ±×·±µ¥ ¸®´ª½º°¡ ¹¹Áö? ¶ó°í ±Ã±ÝÇØ ÇÒ ¼öµµ ÀÖÀ» °Í °°À¸´Ï, °£´ÜÈ÷  
            ¾ð±ÞÇϵµ ³Ñ¾î°¡µµ·Ï ÇϰڴÙ. ¸®´ª½º´Â À¯´Ð½º¿Í ¸Å¿ì ºñ½ÁÇÑ  
            ¿î¿µÃ¼Á¦·Î <ulink url="http://www.gnu.org">GNU</ulink> 
            ÇÁ·ÎÁ§Æ®ÀÇ ÀϺηΠ°³¹ßµÇ¾îÁö°í ÀÖ´Â °ø°³ ¿î¿µÃ¼Á¦´Ù. ¸®´ª½º ¿î¿µÃ¼Á¦´Â  
            ¸®´ª½º Ä¿³Î°ú ±× ¹ÛÀÇ ´Ù¸¥ ¼ö¸¹Àº GNUÇÁ·ÎÁ§Æ®¿¡ ÀÇÇØ¼­ °³¹ßµÈ  
            ÀÀ¿ëÇÁ·Î±×·¥À¸·Î ±¸¼ºµÈ´Ù. ÀÌ·¯ÇÑ ÀÀ¿ëÇÁ·Î±×·¥ Áß¿¡ GCCµµ±¸°¡  
            Æ÷ÇԵǾî Àִµ¥, ÀÌ°É ÀÌ¿ëÇØ¼­ ´Ù¾çÇÑ (ÇÁ·Î±×·¡¹Ö)¾ð¾î·Î ÀÛµ¿°¡´ÉÇÑ  
            ÇÁ·Î±×·¥À» ¸¸µé¾î ³¾ ¼ö ÀÖ´Ù.   
        </para> 
        <para> 
            ¸®´ª½º ¿î¿µÃ¼Á¦ÀÇ ÇÙ½ÉÀº Ä¿³Î(kernel)À̸ç, ¾ö°ÝÇÑ Àǹ̷Π¸®´ª½º´Â ÀÌ  
            Ä¿³ÎÀ» °¡¸£Å²´Ù. Ä¿³ÎÀº ¿î¿µÃ¼Á¦ÀÇ ÇÙ½ÉÀ¸·Î½á ¸ðµç °ÍÀ» Á¦¾îÇÑ´Ù.  
            ÀÎü·Î ¸»ÇÏÀÚ¸é µÎ³úÂë µÇ´Â ºÎºÐÀÏ °ÍÀÌ´Ù. µÎ³ú´Â ½Å°æÀ¸·Î Àü´ÞµÇ´Â  
            ¿ÜºÎÀÇ ÀÚ±ØÀ» ¹Þ¾ÆµéÀ̰í ÀÚ±ØÀ» ÇØ¼®Çؼ­ °¢ ±â°üÀ» ¿òÁ÷ÀδÙ.  
            ¹ú·¡°¡ ´«¾ÕÀ¸·Î ´Þ·Áµé¸é ´«À» °¨´Â´Ù°Å³ª, ¶ß°Å¿î ¹°°ÇÀ» Áã¾úÀ» °æ¿ì  
            ¹Ý»çÀûÀ¸·Î ¼ÕÀ» ¿òÃ߸®°Å³ª ÇÏ´Â µîÀÇ ÇൿÀÌ ±×°ÍÀÌ´Ù. Ä¿³ÎÀº  
            »ç¿ëÀÚÀÇ ¸í·ÉÀ» ¹Þ¾Æµé¿©¼­ ÇÁ·Î¼¼½º¸¦ ½ÇÇàÇÏ°í °¢Á¾  
            ÀåÄ¡(ÀÎü·Î ¸»ÇÏÀÚ¸é ±â°ü)À» Á¦¾îÇÑ´Ù. ¶ÇÇÑ ´ÙÁßÀÇ ÇÁ·Î¼¼½º°¡ ÀÛµ¿ÁßÀÏ  
            °æ¿ì ÇÁ·Î¼¼½º¸¦ ½ºÄÉÁ층ÇÑ´Ù. ¿¹¸¦ µé¾î Űº¸µå(ÀåÄ¡)¸¦ »ç¿ëÀÚ°¡ ´©¸£¸é  
            Ä¿³ÎÀº ŰÀÔ·ÂÀ» ¹Þ¾ÆµéÀ̰í ŰÀÔ·ÂÀ» Ű¿¡ ¸ÅÇεǴ ¹®ÀÚ·Î º¯È¯Çؼ­ È­¸é¿¡ 
            Ãâ·ÂÇÒ °ÍÀÌ´Ù. ¸¸¾à X Windows ½Ã½ºÅÛÀ̶ó¸é À©µµ¿ì ½Ã½ºÅÛÀº Ä¿³Î·Î ºÎÅÍ  
            ŰÀÔ·ÂÀ» ÀÐ¾î µéÀ̰í ÇöÀç ¶°ÀÖ´Â ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÀÔ·Ââ¿¡ ¹®ÀÚ¸¦  
            Ãâ·ÂÇÑ´Ù. 
            <screen> 
Keyboard -> Kernel -> Windowing system -> Application program 
            </screen> 
            À§ÀÇ Å°º¸µå ÀÔ·ÂÀ» º¸¸é Ä¿³ÎÀº À©µµ¿ì ½Ã½ºÅÛ°ú ÀåÄ¡ ±×¸®°í ¾ÖÇø®ÄÉÀÌ¼Ç  
            ÇÁ·Î±×·¥°£ÀÇ µ¥ÀÌÅÍ È帧À» Á¦¾îÇÑ´Ù. ¿©±â¿¡¼­ Ä¿³ÎÀÌ ÀåÄ¡¿Í ÇÁ·Î±×·¥  
            »çÀÌ, ÇÁ·Î±×·¥°ú ÇÁ·Î±×·¥ »çÀÌÀÇ Á¤º¸ÀÇ È帧À» Á¦¾îÇÔÀ» ¾Ë ¼ö ÀÖ´Ù.  
        </para> 
        <para> 
            ÇÁ±×·¥ÀÌ ´Ù·ç´Â °¢°¢ÀÇ µ¥ÀÌÅÍ¿Í ÀåÄ¡ÀÇ ±ÇÇÑÀ» °ü¸®Çؼ­ ¼­·ÎÀÇ µ¥ÀÌÅÍ ¿µ¿ªÀ»  
            ħÀÔÇÏÁö ¾Êµµ·Ï Á¦¾îÇÏ´Â °Í ¿ª½Ã Ä¿³ÎÀÇ Áß¿äÇÑ ±â´É Áß ÇϳªÀÌ´Ù.             
        </para> 
        <para> 
            ÀÌ»óÀ¸·Î Ä¿³ÎÀº °ð ¸®´ª½º¶ó´Â °É ÀÌÇØÇßÀ» °ÍÀÌ´Ù. ±×·¯³ª Ä¿³Î¸¸ ÀÖ´Ù°í ÇØ¼­  
            ¿î¿µÃ¼Á¦°¡ ÀÛµ¿ÇÒ ¼ö ÀÖ´Â °Ç ¾Æ´Ï´Ù. ȸ»ç¸¦ ¿¹·Î µé¾î º¸ÀÚ. 
            ÀüÈ­°¡ ³õ¿© ÀÖ°í ÄÄÇ»ÅͰ¡ ÀÖ´Ù°í ÇØ¼­ ȸ»ç°¡ µ¹¾Æ°¡´Â °Ç ¾Æ´Ï´Ù. ½ÇÁ¦ ÀÏÀ» ÇÏ´Â 
            »ç¶÷ÀÌ ÀÖ¾î¾ß ÇÑ´Ù. ÀüÈ­¿Í ÄÄÇ»ÅÍ¿Í °°Àº ±â¹Ý ½Ã¼³Àº ¸®´ª½º Ä¿³ÎÀ̸ç 
            »ç¶÷Àº (GNU)ÀÀ¿ë ¾ÖÇø®ÄÉÀÌ¼Ç º¼ ¼ö ÀÖ´Ù. µÑÀÌ Á¶È­¸¦ ÀÌ·ç¾î¾ß ¸ñÀûÀ»  
            ´Þ¼ºÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.       
        </para> 
        <para> 
            ¿ì¸®´Â Ä¿³ÎÀ̶ó´Â °®Ãß¾îÁø ±â¹Ý ½Ã¼³À§¿¡¼­ ÀÛµ¿ÇÏ´Â ¾ÖÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇÒ  
            °ÍÀ̸ç, ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÀÛ¼ºÀ» À§Çؼ­ ¾î¼Àºí¸®(assembly)¾î¸¦ »ç¿ëÇÏ´Â ¹ýÀ»  
            ¹è¿ï °ÍÀÌ´Ù. ¾î¼Àºí¸®¾î¸¦ ´Ù·ç±âÀü¿¡ ±âº»ÀÌ µÇ´Â 3°¡Áö ¾ð¾î¿¡ ´ëÇØ¼­  
            ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.     
            <variablelist> 
                <varlistentry> 
                <term>±â°è¾î(Machine Language)</term> 
                <listitem> 
                    <para> 
                        ÄÄÇ»ÅͰ¡ Á÷Á¢ ÀÌÇØÇÒ ¼ö ÀÖ´Â ¾ð¾î´Ù. ¸ðµç ¸í·ÉÀº ÄÄÇ»ÅͰ¡  
                        ÀÌÇØÇÒ ¼ö ÀÖ´Â ÀÏ·ÃÀÇ ¼ýÀÚ·ÎµÈ ¸í·É¿¡ ÀÇÇØ ÀÌ·ç¾îÁø´Ù.  
                        Ư¼öÇÑ »ç¶÷¸¸ ÀÌÇØÇÒ ¼ö ÀÖ´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù.   
                    </para> 
                </listitem> 
                </varlistentry> 
                <varlistentry> 
                <term>¾î¼Àºí¸®¾î(Assembly Language)</term> 
                <listitem> 
                    <para> 
                        ±â°è¾î¿Í µ¿ÀÏÇÏÁö¸¸ ÀÌÇØÇϱ⠾î·Á¿î ÀÏ·ÃÀÇ ¼ýÀÚ´ë½Å  
                        »ç¶÷ÀÌ ÀÌÇØÇϱ⠽¬¿î ¹®ÀÚ·Î ÀÌ·ç¾îÁø´Ù.  
                    </para> 
                </listitem> 
                </varlistentry> 
                <varlistentry> 
                <term>°í±Þ¾î(High-Level Language)</term> 
                <listitem> 
                    <para> 
                        Á»´õ ½±°Ô ÇÁ·Î±×·¡¹Ö ÇÒ¼ö ÀÖµµ·Ï ¸¸µé¾îÁø ¾ð¾î·Î º¸´Ù  
                        Àΰ£ÀÇ ¾ð¾î¿¡ ±ÙÁ¢ÇÏ´Ù. Àΰ£ÀÌ ÀÌÇØÇϱ⠽±´Ù´Â ÀåÁ¡ÀÌ ÀÖÀ¸³ª  
                        ÇϳªÀÇ ¾î¼Àºí¸® ¸í·ÉÀ¸·Î ½ÇÇàÇØµµ µÉ°É ¿©·¯¹øÀÇ ¸í·ÉÀ¸·Î  
                        ½ÇÇàµÇ¹Ç·Î ºñÈ¿À²ÀûÀÏ ¼ö ¹Û¿¡ ¾ø´Ù.    
                    </para> 
                </listitem> 
                </varlistentry> 
            </variablelist> 
        </para> 
    </section> 
</section> 
 
<section id="struct"> 
    <title>ÄÄÇ»ÅÍ ±¸Á¶</title> 
    <para> 
        ¾ð¾î¸¦ ÀÌÇØÇÏ·Á¸é ±× ¹Ø¹ÙÅÁÀÌ µÇ´Â ¹®È­¸¦ ÀÌÇØÇÏ°í ¿ª»ç¸¦ ÀÌÇØÇØ¾ß ÇϵíÀÌ 
        ÇÁ·Î±×·¡¹ÖÀ» ÀÌÇØÇØ¼­ ÇÁ·Î±×·¥À» ¸¸µé°íÀÚ ÇÑ´Ù¸é ±× ¹Ø¹ÙÅÁÀÌ µÇ´Â ÄÄÇ»ÅÍ¿¡  
        ´ëÇØ¼­ ÀÌÇØÇϰí ÀÖ¾î¾ß ÇÑ´Ù. ¹°·Ð ¿©·¯ºÐÀÌ ÀüÀÚ°øÇÐÀ» °øºÎÇÒ ÇÊ¿ä´Â ¾ø°ÚÁö¸¸  
        Àû¾îµµ ÄÄÇ»ÅÍ¿¡¼­ ÇÁ·Î±×·¥ÀÌ ¾î¶»°Ô ½ÇÇàµÉ ¼ö ÀÖ´ÂÁö¿Í °°Àº ±âº»ÀûÀÎ °Í¿¡  
        ´ëÇÑ ÀÌÇØ Çϰí ÀÖ¾î¾ß ÇÑ´Ù. 
    </para> 
    <para> 
        ÇöÀç ÄÄÇ»ÅÍÀÇ ±¸Á¶´Â ±¸Á¶¸¦ ¸¸µç â½ÃÀÚÀÇ À̸§À» µý Von Neumann(Æù ³ëÀ̸¸)À̶ó°í  
        ºÒ¸®¿ì´Â ±¸Á¶¿¡ ±â¹ÝÀ» µÎ°í ÀÖ´Ù. Æù ³ëÀ̸¸Àº ÄÄÇ»ÅÍÀÇ ±¸Á¶¸¦  
        CPU(Central Processing Unit)¿Í ¸Þ¸ð¸®(memory)ÀÇ µÎ°³ÀÇ ÁÖ¿ä ºÎºÐÀ¸·Î ³ª´©¾î¼­  
        ±¸¼ºÇß´Ù. ÀÌ ±¸Á¶´Â °³ÀÎ ÄÄÇ»ÅÍ, ½´ÆÛ ÄÄÇ»ÅÍ, ¸ÞÀÎ ÇÁ·¹ÀÓ ½ÉÁö¾î´Â ÇÚµåÆù°ú °°Àº  
        ¸ðµç Çö´ëÀûÀÎ ÄÄÇ»ÅͰ¡ äÅÃÇϰí ÀÖ´Ù. °£´ÜÈ÷ ¸»Çؼ­ "¿¬»ê"°ú "ÀúÀå"ÀÇ µÎ ºÎºÐÀ¸·Î  
        ³ª´©¾ú´Ù.  
    </para> 
    <section> 
        <title>ÄÄÇ»ÅÍÀÇ ¸Þ¸ð¸® ±¸Á¶</title> 
        <para> 
            ÄÄÇ»ÅͰ¡ ¸Þ¸ð¸®¸¦ º¸´Â ¹æ½ÄÀ» ½±°Ô ÀÌÇØÇÏ·Á¸é ´Ù¼¼´ë ÁÖÅÿ¡ ºñÄ¡µÇ¾î ÀÖ´Â  
            ¿ìÆíÇÔÀ» »ý°¢ÇϸéµÈ´Ù. ¿ìÆíÇÔÀº ±âº»ÀûÀ¸·Î ÇØ´ç È£¼ö¿¡ »ç´Â »ç¶÷ÀÌ ¿°¶÷ÀÌ  
            °¡´ÉÇÏ¸ç ¿­¶÷ÇØ¾ßÇÒ ¿ìÆíÇÔÀ» ½±°Ô ãÀ» ¼ö ÀÖµµ·Ï ¹øÈ£(º¸Åë È£¼ö)°¡ ¸Þ°ÜÁ®  
            ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù. ÄÄÇ»ÅͰ¡ ¸Þ¸ð¸®¸¦ º¸´Â °üÁ¡¿ª½Ã ÀÌ¿Í ºñ½ÁÇÏ´Ù. ÄÄÇ»ÅÍ´Â  
            °¢ ¸Þ¸ð¸® ¿µ¿ªÀ» ½±°Ô ã¾Æ³»¾î¼­ µ¥ÀÌÅ͸¦ ÀúÀåÇϰųª °¡Á®¿Ã ¼ö ÀÖµµ·Ï  
            Çϱâ À§Çؼ­ ¹øÈ£°¡ ¸Þ°ÜÁ® ÀÖ´Ù. ¿¹¸¦ µé¾î¼­ ´ç½ÅÀÇ ÄÄÇ»ÅͰ¡ 256MbyteÀÇ  
            ¸Þ¸ð¸®¸¦ °¡Áö°í ÀÖ´Ù´Â °ÍÀº ´ç½ÅÀÇ ÄÄÇ»ÅͰ¡ 256*¹é¸¸ÀÇ ÀúÀå °ø°£À» °¡Áö°í  
            ÀÖÀ½À» ÀǹÌÇÑ´Ù. 256*¹é¸¸ °³ÀÇ ¿ìÆíÇÔÀ» °¡Áö°í ÀÖ´Â °ÍÀÌ´Ù. °¢°¢ÀÇ ¿µ¿ªÀº  
            À¯ÀÏÇÏ°Ô ±¸º°µÉ ¼ö ÀÖ´Â ¹øÈ£°¡ ¸Þ°Ü Áø´Ù.      
            <figure>     
                <title>¸Þ¸ð¸® ¿µ¿ªÀº ¿ìÆíÇÔ°ú ºñ½ÁÇÏ´Ù</title> 
                <graphic fileref="http://www.joinc.co.kr/albums/album01/agl.gif"> 
            </figure> 
            ÄÄÇ»ÅͰ¡ À§¿Í °°Àº ¹æ¹ýÀ¸·Î ¸Þ¸ð¸®¸¦ °ü¸®ÇÏ´Â ÀÌÀ¯´Â °£´ÜÇÑ °ü¸®°¡ °¡´ÉÇ챉  
            ¶§¹®ÀÌ´Ù. ¸¸¾à ÄÄÇ»ÅͰ¡ µ¥ÀÌÅÍÀÇ Å©±â¿¡ µû¸¥ °¡º¯Å©±âÀÇ ´Ù¾çÇÑ Å©±âÀÇ ¸Þ¸ð¸® 
            ¿µ¿ªÀÇ Á¶ÇÕÀ» °ü¸®ÇØ¾ß ÇÑ´Ù¸é ÀÌµé ¸Þ¸ð¸®¿µ¿ªÀ» ´Ù·ç±â°¡ ¸Å¿ì ¾î·Á¿ï °ÍÀÌ´Ù.  
        </para> 
        <para> 
            ¸Þ¸ð¸®¿¡´Â ÄÄÇ»ÅÍÀÇ ¿¬»ê¿¡ ÇÊ¿äÇÑ ¸ðµç Á¤º¸°¡ ÀúÀåµÈ´Ù. Áö±Ý ´ç½ÅÀÌ »ç¿ëÇ졒  
            ÀÖ´Â ÄÄÇ»Å͸¦ ¿¹·Î µé¾îº¸µµ·Ï ÇÏÀÚ. Áö±Ý ´ç½ÅÀÌ »ç¿ëÇÏ´Â ÄÄÇ»ÅÍÀÇ ¸Þ¸ð¸®¿¡´Â 
            ´ÙÀ½°ú °°Àº ³»¿ëµéÀÌ ÀúÀåµÇ¾î ÀÖÀ» °ÍÀÌ´Ù. 
            <itemizedlist> 
                <listitem> 
                    <para> 
                        Ä¿¼­ÀÇ ½ºÅ©¸°»ó¿¡¼­ÀÇ À§Ä¡ 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        ½ºÅ©¸°»ó¿¡ Á¸ÀçÇÏ´Â °¢ À©µµ¿ìÀÇ À§Ä¡¿Í Å©±âµé     
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        »ç¿ëÇϰí ÀÖ´Â ÆùÆ®ÀÇ Á¤º¸µé 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        °¢ À©µµ¿ì¿¡¼­ »ç¿ëÇϰí ÀÖ´Â À§Á¬µé(¹öư, ¹Ú½º, ¸Þ´º) 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        ¾ÆÀÌÄÜÀÇ ±×·¡ÇÈ Á¤º¸ 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        ´ëÈ­»óÀÚ µî¿¡ Ç¥½ÃµÇ´Â ¸Þ½ÃÁöµé 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        ±âŸ 
                    </para> 
                </listitem> 
            </itemizedlist> 
            ¸Þ¸ð¸®¿¡ µ¥ÀÌÅͰ¡ ÀÖ´Ù¸é µ¥ÀÌÅ͸¦ ´Ù·ç´Â ÇÁ·Î±×·¥µéµµ ÀÖÀ» °ÍÀÌ´Ù.  
            ÀÌ ÇÁ·Î±×·¥Àº ¸Þ¸ð¸® µ¥ÀÌÅ͸¦ ¾²°Å³ª Àд ÀÏÀ» ÇÒ °ÍÀÌ´Ù. µ¥ÀÌÅͿʹ  
            Á» ´Ù¸¥ Ư¼ºÀ» °¡Áö°í ÀÖÀ¸¹Ç·Î µ¥ÀÌÅÍ¿Í Á» ´Ù¸£°Ô Ãë±ÞµÉ ¼ö ÀÖÀ»°Å¶ó 
            »ý°¢µÉ ¼ö ÀÖÁö¸¸ Æù ³ëÀ̸¸ ±¸Á¶¿¡ ÀÇÇØ À̵é ÇÁ·Î±×·¥¿ª½Ã µ¥ÀÌÅÍ¿Í  
            µ¿ÀÏÇÏ°Ô ¸Þ¸ð¸®¿¡ ÀúÀåµÈ´Ù. Æù ³ëÀ̸¸ ±¸Á¶¸¦ µû¸£´Â ÄÄÇ»ÅÍÀÇ ÀÔÀå¿¡¼­  
            º¸ÀÚ¸é ÇÁ·Î±×·¥ ¿ª½Ã µ¥ÀÌÅÍÀÏ »ÓÀÌ´Ù.    
        </para> 
    </section> 
    <section> 
        <title>CPU</title> 
        <para> 
            ¸Þ¸ð¸®¿¡ µ¥ÀÌÅͰ¡ ÀúÀåµÇ¾î ÀÖ´Ù°í´Â ÇÏÁö¸¸ À̰͸¸ °¡Áö°í´Â  
            ¾Æ¹«·± Àǹ̰¡ ¾ø´Ù. ´ÜÁö ºñÆ®ÀÇ ³ª¿­ »ÓÀ¸·Î µ¥ÀÌÅ͸¦ ¾µ¸ð ÀÖ´Â Á¤º¸·Î  
            ¹Ù²Ù±â À§Çؼ­´Â µ¥ÀÌÅ͸¦ ÀоîµéÀ̰í, ¼öÁ¤Çϰí, ¿Å±â´Â µîÀÇ ÀÏÀ»  
            ÇØ¾ß¸¸ÇÑ´Ù. ÀÌ·¯ÇÑ ÀÏÀº CPU°¡ ´ã´çÇÏ°Ô µÈ´Ù.  
        </para> 
        <para> 
            CPU´Â ÇѹøÀÇ ½Ã°£¿¡ ¸Þ¸ð¸®·Î ºÎÅÍ ¸í·É(instruction)À» ÀÐ¾î µéÀÌ°í  
            À̰͵éÀ» ½ÇÇàÇÑ´Ù. À̰ÍÀ» <emphasis>fetch-execute cycle</emphasis>  
            ¶ó°í Çϴµ¥, ÀÌ ¸í·É¿¡´Â ´ÙÀ½°ú °°Àº ¿ä¼ÒµéÀÌ Æ÷ÇԵǾî ÀÖ´Ù.   
            <itemizedlist> 
                <listitem> 
                    <para> 
                        Program Counter 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        Instruction Decoder 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        Data bus 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        General-purpose register 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        Arithmetic and logic unit 
                    </para> 
                </listitem> 
            </itemizedlist> 
            <emphasis>program counter</emphasis>´Â ÄÄÇ»ÅÍ¿¡°Ô ´ÙÀ½ ¼öÇàÇØ¾ßµÉ  
            ¸í·É(instruction)À» ¾Ë·ÁÁÖ±â À§Çؼ­ »ç¿ëÇÑ´Ù. ¿ì¸®´Â ¾Õ¼­ ÄÄÇ»ÅÍÀÇ  
            ÀÔÀå¿¡¼­ ÇÁ·Î±×·¥°ú µ¥ÀÌÅͰ¡ ¸Þ¸ð¸®¿¡ ÀúÀåµÇ´Â ¹æ½Ä¿¡ ÀÇÇØ¼­´Â  
            ¾î¶°ÇÑ Â÷À̵µ ¾ø´Ù°í ¹è¿ü¾ú´Ù. ´ÜÁö ÇØ¼®¿¡ À־ Â÷À̰¡ ÀÖÀ» »ÓÀÌ´Ù.   
            program counterÀº ½ÇÇàµÉ ´ÙÀ½ ¸í·ÉÀÌ ÀúÀåµÇ¾î ÀÖ´Â ¸Þ¸ð¸®ÁÖ¼Ò°ªÀ»  
            °¡Áö°í ÀÖ´Ù. <emphasis>instruction decoder</emphasis>´Â ¼öÇàÇØ¾ßµÉ  
            ¸í·ÉÀÇ Çü½ÄÀ» ¾Ë·ÁÁÖ±â À§Çؼ­ »ç¿ëµÈ´Ù. ¼öÇàÇØ¾ßµÉ ¸í·ÉÀÇ Çü½ÄÀ̶õ  
            ´Ù¸§ ¾Æ´Ñ ´õÇϱâ, »©±â, °öÇϱâ, µ¥ÀÌÅÍ À̵¿°ú °°Àº °ÍµéÀÌ´Ù. 
            À̻󿡼­ ÄÄÇ»ÅÍÀÇ ¼öÇàÀº ¸í·Éµé°ú ¸í·ÉÀÌ ÀúÀåµÈ ¸Þ¸ð¸® À§Ä¡ÀÇ  
            ¸ñ·Ï¿¡ ÀÇÇØ¼­ ÀÌ·ç¾î ÁüÀ» ¾Ë ¼ö ÀÖ´Ù.     
        </para> 
        <para> 
            ÀÌÁ¦ ÄÄÇ»ÅÍ´Â ¾î¶² ÀÏÀ» ¼öÇàÇÒ Áغñ°¡ µÇ¾îÀÖ´Ù. ÀÏÀ» ¼öÇà(°è»ê)Ç챉  
            À§Çؼ­´Â µ¥ÀÌÅͰ¡ ÀÖ¾î¾ß ÇÑ´Ù. <emphasis>data bus</emphasis>´Â   
            °è»êÇÒ µ¥ÀÌÅͰ¡ ÀÖ´Â ¸Þ¸ð¸®ÀÇ À§Ä¡¸¦ °¡Áø´Ù. data bus¶ó°í ºÒ¸®¿ì´Â  
            ÀÌÀ¯´Â CPU¿Í Memory»çÀ̸¦ ¿¬°áÇØÁֱ⠶§¹®ÀÌ´Ù. ¹ö½º¶ó´Â°Ç ÇϳªÀÇ  
            °´Ã¼¿¡ ÇÊ¿ä·Î ÇÏ´Â ¿©·¯°³ÀÇ ´Ù¸¥ °´Ã¼¸¦ ¿¬°áÇÏ´Â ±¸Á¶¸¦ ¸»ÇÑ´Ù.  
            ¿î¼Û¼ö´ÜÀ¸·Î ÀÌ¿ëÇÏ´Â ¹ö½º¸¦ »ý°¢ÇÏ¸é µÉ°ÍÀÌ´Ù.  
        </para> 
        <para> 
            ÀüÇüÀûÀ¸·Î º¸ÀÚ¸é ¸Þ¸ð¸®´Â CPU(ÀÌÇÏ ÇÁ·Î¼¼¼­)ÀÇ ¿ÜºÎ¿¡ À§Ä¡Çϰí ÀÖ´Ù.  
            ±×·¸Áö¸¸ ÇÁ·Î¼¼¼­µµ <emphasis>register</emphasis>¶ó°í ºÒ¸®¿ì´Â ºü¸£°Ô  
            Á¢±Ù °¡´ÉÇÑ(¹°¸®ÀûÀ¸·Î °¡±õ±â ¶§¹®¿¡) ÀÚü ¸Þ¸ð¸®¸¦ °¡Áö°í ÀÖ´Ù.  
            ÀÌ·¯ÇÑ ·¹Áö½ºÅÍ´Â ÀϹݸñÀû(general-purpose) ·¹Áö½ºÅÍ¿Í  
            Ưº°¸ñÀû(special-purpose) ·¹Áö½ºÅÍÀÇ µÎ°¡Áö Á¾·ù·Î ³ª´¶´Ù.  
            ÀÏ¹Ý ¸ñÀû ·¹Áö½ºÅÍ´Â ¸»±×´ë·Î ´õÇϱâ, »©±â, °öÇϱâ, ºñ±³¿Í °°Àº ÀϹÝÀûÀÎ  
            ¸í·ÉÀ» À§Çؼ­ »ç¿ëµÈ´Ù. ÄÄÇ»ÅÍ´Â Á¦ÇÑµÈ ¸î°³¸¸ÀÇ ÀÏ¹Ý ¸ñÀû ·¹Áö½ºÅ͸¦  
            °¡Áö°í ÀÖÀ» »ÓÀÌ¸ç ´ëºÎºÐÀº ÁÖ(main)¸Þ¸ð¸®¸¦ ÀÌ¿ëÇÑ´Ù.   
        </para> 
        <para> 
            ÀÌÁ¦ CPU°¡ ÇÊ¿ä·Î ÇÏ´Â µ¥ÀÌÅ͸¦ °¡Á®¿Ô´Ù¸é decoded instruction¿¡ µû¶ó¼­  
            ¼öÄ¡¿¬»ê(arithmetic)°ú ³í¸®¿¬»ê(logic)À» ¼öÇàÇÑ´Ù. À̰͵éÀº ½ÇÁ¦ 
            ¼öÇàµÇ´Â ¸í·Éµé·Î½á ¿¬»ê¼öÇà °á°ú´Â data bus¸¦ ÅëÇØ¼­ ÁÖ ¸Þ¸ð¸®°ø°£  
            À̳ª ·¹Áö½ºÅ͸®¿¡ ÀúÀåµÈ´Ù.   
        </para> 
        <para> 
            CPUÀÇ ÀÌ·¯ÇÑ ÀÛµ¿Àº ¸Å¿ì ½ÉÇÃÇÏ´Ù(¸¸¾à ±×·¸Áö ¾Ê´Ù¸é CPUÁ¦ÀÛ ´Ü°¡°¡  
            ±ØÀûÀ¸·Î ¿Ã¶ó°¥ °ÍÀÌ´Ù). ºñ·Ï Ãʱâ ÇÁ·Î¼¼¼­¿¡ ºñÇØ¼­ ÇöÀçÀÇ  
            ÇÁ·Î¼¼½º°¡ ¸Å¿ì ¸¹Àº ¹ßÀüÀ» ÇÏ°í ¸Å¿ì º¹ÀâÇØÁö±â´Â ÇßÁö¸¸ 
            ±âº»ÀûÀÎ ÀÛµ¿¹æ½ÄÀº ÃʱâÀÇ ¸ðµ¨À» µû¸£°í ÀÖ´Ù. ´Ù¸¸ ¿©±â¿¡ 
            chache hierarchies, superscalar processors, pipelining, branch prediction, 
            out-of-order execution, microcode translation, coprocessorsµîÀÇ  
            (¸Å¿ì »ý¼ÒÇÑ)±â¼úÀÌ Ãß°¡ µÇ¾î¼­ ¼º´ÉÀ» Çâ»ó ½ÃÄ×´Ù´Â °Í¸¸ ´Ù¸£´Ù°í  
            ÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ¼º´ÉÇâ»ó ±â¼úµéÀº ¿É¼ÇÀ¸·Î ºÙÀº »çÇ×À̶ó°í º¸¸é  
            µÇ°Ú´Ù. À§ÀÇ ´Ü¾îµéÁß pipelining¿Í coprocessors(¼öÄ¡¿¬»ê ÇÁ·Î¼¼½º)  
            ¿Ü¿¡´Â óÀ½ Á¢Çغ» ´Ü¾îµéÀÌ ¸¹À» °Çµ¥, ±×·¸´Ù°í ÇØ¼­ ±×¸® °ÆÁ¤ÇÒ  
            ÇÊ¿ä´Â ¾ø´Ù. Àú°ÍµéÀ» ¸ð¸¥´Ù°í ÇØµµ CPUÀÇ ±âº»ÀÛµ¿ ¹æ½ÄÀ» ÀÌÇØÇϴµ¥  
            º° ¹®Á¦´Â ¾ø´Ù. ²À ¾Ë¾Æ¾ß °Ú´Ù¸é ÀÎÅͳÝÀ» ÅëÇØ¼­ CPU¿¡ ´ëÇÑ ´õ¿í  
            ÀÚ¼¼ÇÑ ³»¿ëÀ» ã¾Æ º¸±æ ¹Ù¶õ´Ù. 
        </para> 
    </section> 
    <section> 
        <title>¸î °¡Áö ¿ë¾îµé</title> 
        <para> 
            ÄÄÇ»ÅÍÀÇ ¸Þ¸ð¸®´Â °íÁ¤µÈ Å©±â¸¦ °¡Áö´Â ¿¬¼ÓµÈ ¼ýÀÚ¸¦ °¡Áö´Â ÀúÀå°ø°£ÀÇ  
            ¿¬¼ÓÀÌ´Ù. ÀÌµé ¼ýÀÚ´Â ÀúÀå°ø°£ÀÇ À§Ä¡¸¦ °¡¸®Å°´Âµ¥ À̸¦  
            '''ÁÖ¼Ò(address)'''¶ó°í ÇÑ´Ù. °íÁ¤µÈ Å©±â¸¦ °¡Áö´Â ´ÜÀÏ °ø°£À»  
            X86 ÇÁ·Î¼¼¼­¿¡¼­´Â '''byte'''¶ó°í ºÎ¸£¸ç 0¿¡¼­ 255»çÀÌÀÇ °ªÀ» °¡Áø´Ù.  
        </para> 
        <para> 
            ÁÖ¼Ò°ø°£ÀÇ Å©±â°¡ 0¿¡¼­ 255ÀÇ °ªÀ» °¡Áø´Ù°í Çß´Ù.   
            ¾Æ¸¶µµ È­¸é¿¡ Ç¥½ÃµÇ´Â ¹®ÀÚ¿Í ±×¸²À» Ç¥ÇöÇϱâ À§Çؼ­´Â ÈξÀ Å« °ªÀÌ  
            ÇÊ¿äÇÒ °ÍÀÌ´Ù. ÀÌ·±°ÍµéÀº ¾î¶»°Ô Ç¥ÇöÇÒ±î ? ÀÌ·¯ÇÑ Ç¥ÇöÀº  
            ±×·¡ÇÈ Ä«µå(graphics card)°¡ ÀÖÀ½À¸·Î °¡´ÉÇØ Áø´Ù. ±×·¡ÇÈ Ä«µå´Â  
            ¿¬¼ÓµÈ ¿©·¯°³ÀÇ °ªµéÀ» ÇØ¼®Çؼ­ È­¸é¿¡ Ãâ·Â½ÃŲ´Ù. È­¸é¿¡  
            µ¥ÀÌÅ͸¦ Ãâ·ÂÇÒ ¶§´Â ÀоîµéÀÎ °ªÀ» ASCII Äڵ忡 ¸ÊÇÎ ½ÃÄѼ­ ¿©±â¿¡  
            ÀÖ´Â °ªÀ» È­¸é¿¡ »Ñ·ÁÁÖ°Ô µÈ´Ù. ¿¹¸¦ µé¾î ÀоîµéÀÎ °ªÀÌ 65¶ó¸é 'A'°¡  
            È­¸é¿¡ Ãâ·ÂµÈ´Ù. È­¸é¿¡ "HELLO"¸¦ Ãâ·ÂÇϱâ À§Çؼ­´Â  
            72, 69, 76, 76, 79ÀÇ ¿¬¼ÓµÈ °ªµéÀ» ÇÊ¿ä·Î ÇÑ´Ù. ´ÙÀ½Àº ASCII ÄÚµåÇ¥ÀÌ´Ù.   
            <figure>     
                <title>ASCII Å×À̺í</title> 
                <graphic fileref="http://www.joinc.co.kr/albums/album01/age.gif"> 
            </figure> 
            ºÐ¸í 0¿¡¼­ 255±îÁöÀÇ °ªÀ̶ó°í Çߴµ¥ ¿Ö 127±îÁö ¹Û¿¡ ¾øÁö? ¶ó°í »ý°¢ÇÒ  
            ¼ö ÀÖÀ» °Í °°´Ù. ½ÇÁ¦ È­¸éÃâ·Â°ú Á¦¾î¸¦ À§Çؼ­´Â 0-127±îÁöÀÇ °ªÀ»  
            »ç¿ëÇÑ´Ù. 128¿¡¼­ 255´Â Extended ASCII Codes¶ó°í ºÒ¸®¿ì¸ç ¿µ¹®¿ÜÀÇ  
            ´Ù¸¥ ¹®ÀÚµé(ƯÈ÷ 2¹ÙÀÌÆ® ¹®ÀÚ)°ú Ư¼ö ¹®ÀÚµéÀ» ³ªÅ¸³»±â À§Çؼ­ »ç¿ë  
            ÇÑ´Ù.    
        </para> 
        <para> 
            ±×·¸´Ù¸é 255º¸´Ù ´õÅ« °ªÀº ¾î¶»°Ô ÇØ¾ß ´Ù·ê ¼ö ÀÖÀ»±î ? À̰ÍÀº ¹ÙÀÌÆ®¸¦  
            µÎ°³ ÀÌ»ó °áÇÕÇÔÀ¸·Î¼­ °¡´ÉÇØ Áø´Ù. µÎ ¹ÙÀÌÆ®¶ó¸é 0¿¡¼­ 65536±îÁö Ç¥Çö 
            °¡´É ÇÏ´Ù. 4 ¹ÙÀÌÆ®·Î ÇÒ°æ¿ì 0¿¡¼­ 4294967295±îÁöÀÇ °ªÀ» Ç¥½ÃÇÒ ¼ö  
            ÀÖÀ» °ÍÀÌ´Ù. Å« ¼ö¸¦ Ç¥ÇöÇϱâ À§Çؼ­ ¹ÙÀÌÆ® Á¶ÇÕÀ» ÇØ¾ßÇÑ´Ù¸é ÇÁ·Î±×·¡¹Ö  
            ÇÒ ¶§ ²Ï³ª ±ÍÂúÀ» °Å¶ó°í »ý°¢ÇÒ ¼ö ÀÖÁö¸¸ ´ÙÇàÀ̵µ ÄÄÇ»ÅÍ´Â 4¹ÙÀÌÆ®¸¦ ±âº»´ÜÀ§·Î 
            ¹­¾î¼­ °ü¸®Çϰí ÀÖÀ¸´Ï Å©°Ô °ÆÁ¤ÇÒ ÇÊ¿ä´Â ¾ø´Ù. 
        </para> 
        <para> 
            ¾Õ¼­ ¿ì¸®´Â ÄÄÇ»ÅͰ¡ ³»ºÎÀûÀ¸·Î »ç¿ëÇÏ´Â ·¹Áö½ºÅͶó°í ºÒ¸®¿ì´Â ÀúÀå°ø°£¿¡  
            ´ëÇØ¼­ ¾Ë¾Æ º¸¾Ò´Ù. ·¹Áö½ºÅÍ´Â ÄÄÇ»ÅͰ¡ (ºü¸¥)°è»êÀ» ÇϱâÀ§ÇÑ ¿ëµµ·Î  
            »ç¿ëÇÑ´Ù. ¿©·¯ºÐÀÇ Ã¥»óÀ¸·Î ºñÀ¯ÇØ º¸ÀÚ. ¿©·¯ºÐÀÇ Ã¥»ó¿¡´Â ÀÛ¾÷¿¡ »ç¿ëÇ챉  
            À§ÇÑ ¸¹Àº Ã¥, ¹®¼­, º¸°í¼­µéÀÌ ÇÑ ±ÍÅüÀ̸¦ Â÷ÁöÇϰí ÀÖÀ» °ÍÀÌ´Ù. ±×·¯³ª ºÐ¸í  
            ¿©·¯ºÐÀÌ Áö±Ý ó¸®ÇؾßÇÒ Àϰú °ü·ÃµÈ ¹®¼­´Â ¿©·¯ºÐ°ú °¡±î¿î °÷¿¡ À§Ä¡Ç졒  
            ÀÖÀ» °ÍÀÌ´Ù. ¾Æ¸¶µµ ¸ð´ÏÅÍ ¿·À̳ª, Ã¥¹ÞÀÌ Á¤µµ°¡ µÉ°Çµ¥, ÀÌ·¸°Ô ÇÏ´Â ÀÌÀ¯´Â  
            ÀÛ¾÷¿¡ ÇÊ¿äÇÑ µ¥ÀÌÅ͸¦ Á»´õ »¡¸® ã±â À§Çؼ­ÀÌ´Ù. ÀÌ·¯ÇÑ Àå¼Ò°¡ ÄÄÇ»ÅÍÀÇ  
            ·¹Áö½ºÅÍ¿¡ ÇØ´çÇÑ´Ù. ·¹Áö½ºÅÍ¿¡´Â ÄÄÇ»ÅͰ¡ ÇöÀç ÀÛ¾÷ÁßÀÎ µ¥ÀÌÅͰ¡ ³õ¿©¼­  
            Á»´õ ºü¸¥ ÀÛ¾÷ÀÌ °¡´ÉÇϵµ·Ï ÇÑ´Ù.  
        </para> 
        <para> 
            ¾Æ¸¶µµ ¿©·¯ºÐÀÇ ´ëºÎºÐÀº X86ÇÁ·Î¼¼½º¸¦ »ç¿ëÇÏ´Â ÄÄÇ»Å͸¦ »ç¿ëÇϰí ÀÖÀ» °ÍÀÌ´Ù.  
            x86 ÇÁ·Î¼¼½º´Â 4¹ÙÀÌÆ® Å©±âÀÇ ·¹Áö½ºÅ͸¦ °¡Áø¸ç À̸¦ <emphasis>word</emphasis> 
            ¶ó°í ÇÑ´Ù. Áï 1¿öµå´Â 4¹ÙÀÌÆ®°¡ µÈ´Ù. ·¹Áö½ºÅÍÀÇ Å©±â¸¦ 4¹ÙÀÌÆ®·Î Á¤ÇÑ°Ç  
            ÄÄÇ»ÅͰ¡ °è»êÀ» Çϱâ À§ÇÑ °¡Àå ÆíÇÑ ÀÚ·áÀÇ Å©±âÀ̱⠶§¹®ÀÌ´Ù. 4¹ÙÀÌÆ®´Â  
            40¾ïÁ¤µµÀÇ Å©±â¸¦ °¡Áø´Ù.   
        </para> 
        <para> 
            ÁÖ¼Ò(address)´Â ·¹Áö½ºÅÍÀÇ Å©±â¿¡ ¸Âµµ·Ï 4¹ÙÀÌÆ®(1¿öµå)ÀÇ Å©±â¸¦ °¡Áø´Ù.  
            ÁÖ¼Ò°¡ 4¹ÙÀÌÆ® Å©±â¸¦ °¡Áö°Ô µÇ¹Ç·Î ÃÖ´ë 4294967296¹ÙÀÌÆ® ¸¸Å­À» ´Ù·ê ¼ö  
            ÀÖÀ» °ÍÀÌ´Ù. À̰ÍÀº 4±â°¡ ¹ÙÀÌÆ®ÀÇ Å©±â·Î ÀϹÝÀûÀÎ ÄÄÇ»ÅͰ¡ Á¦¾î°¡´ÉÇÑ  
            ¹°¸®ÀûÀÎ ¸Þ¸ð¸®ÀÇ Å©±â°¡ µÈ´Ù.   
        </para> 
        <para> 
            ÁÖ¼Ò´Â °á±¹ µ¥ÀÌÅͰ¡ ÀúÀåµÈ ¸Þ¸ð¸®ÀÇ À§Ä¡¸¦ °¡¸®Å°°Ô µÇ´Âµ¥, ÀÌ·¯ÇÑ  
            °¡¸®Å²´Ù´Â Ư¡ ¶§¹®¿¡ <emphasis>pointers</emphasis>¶ó°í ºÎ¸£±âµµ ÇÑ´Ù.  
        </para> 
    </section> 
    <section> 
        <title>interpreting Memory</title> 
        <para> 
            ÄÄÇ»ÅÍ´Â ¸Å¿ì ¾ö°ÝÇÏ°Ô ÀÛµ¿µÇ´Â ³í¸®±â°è´Ù. ¶§¹®¿¡ ÄÄÇ»Å͸¦ ´Ù·ç´Â ÇÁ·Î±×·¡¸Ó  
            ¿ª½Ã ¸Å¿ì ¾ö°ÝÇØÁú ¼ö ¹Û¿¡ ¾ø´Ù. ÄÄÇ»Åʹ ȥÀÚ¼­´Â ¾î¶°ÇÑ Àϵµ ¼öÇàÇÒ  
            ¼ö ¾øÀ¸¸ç ¹Ýµå½Ã ÇÁ·Î±×·¥ÀÌ ÀÖ¾î¾ß Çϸç, ÇÁ·Î±×·¥¿ª½Ã ¾ö°ÝÇÑ ±ÔÄ¢À» µû¸£µµ·Ï  
            ÀÛ¼ºµÇ¾î¾ß Çϱ⠶§¹®ÀÌ´Ù. ÄÄÇ»ÅͰ¡ ¿øÇÏ´Â ÀÏÀ» ÇÏ´Â °É º¸°í ½Í´Ù¸é  
            ¿©·¯ºÐÀº ÄÄÇ»ÅÍ¿¡°Ô ÄÄÇ»ÅͰ¡ ¼öÇàÇØ¾ß ÇÒ ÀÏÀ» ¸íÈ®ÇÏ°Ô ¸í·ÉÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù.  
        </para> 
        <para> 
            ÄÄÇ»ÅͰ¡ ´ë·« ¾Ë¾Æ¼­ ÇØÁٰŶó°í ±â´ëÇÏÁö ¸»¶ó. ÄÄÇ»ÅÍ´Â ¹®ÀÚ°Ç, ±×¸²À̰Ç, 
            À½¾ÇÀÌ°Ç À¥ÆäÀÌÁö°Ç ´ÜÁö ¼ýÀÚ·Î ÀúÀåÇÒ »ÓÀ̸ç, ¿¬¼ÓµÈ ¼ýÀÚÀÇ ³ª¿­·Î  
            º¼ »ÓÀÌ´Ù. ¹®ÀÚ, ±×¸², À½¾ÇµéÀ» µéÀ» ¼ö ÀÖ´Â°Ç ÀÌ·¯ÇÑ ¼ýÀÚÀÇ ³ª¿­À» ÇØ¼®ÇÒ¼ö  
            ÀÖ´Â (ÇÁ·Î±×·¡¸Ó°¡ ÀÛ¼ºÇÑ)Ưº°ÇÑ ÇÁ·Î±×·¥ÀÌ ÀÖ¾î¾ßÁö °¡´ÉÇÏ´Ù.    
        </para> 
        <para> 
            ¸Þ¸ð¸®¿¡ °í°´Á¤º¸¸¦ ÀúÀåÇÏ´Â °É ¿¹·Î µé¾îº¸ÀÚ. ¿©·¯ºÐÀº °í°´ÀÇ À̸§°ú  
            ÁÖ¼Ò¸¦ ÀúÀåÇϱâ À§Çؼ­ °¢°¢ 10°³¿Í 50°³ Á¤µµÀÇ ASCII ¹®ÀÚ¸¦ »ç¿ëÇØ¾ß ÇÏ´Â°É  
            ½±°Ô »ý°¢ÇØ ³¾ ¼ö ÀÖÀ» °ÍÀÌ´Ù. °í°´ÀÇ ³ªÀÌ¿Í °í°´ÀÇ ¾ÆÀ̵𸦠ÀúÀåÇϱâ À§Çؼ­´Â 
            ¼ýÀÚ°¡ ÇÊ¿äÇÔÀ» ¾Ë¾Æ ³¾ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌ °æ¿ì ¸Þ¸ð¸® ºí·°¿¡´Â ´ÙÀ½°ú °°Àº  
            ÇüÅ·Π°í°´ÀÇ Á¤º¸°¡ ÀúÀåµÉ ¼ö °ÍÀÌ´Ù.   
            <screen> 
·¹ÄÚµåÀÇ ½ÃÀÛ : 
   °í°´ÀÇ À̸§ (10 ¹ÙÀÌÆ®)   = ·¹ÄÚµåÀÇ ½ÃÀÛ  
   °í°´ÀÇ ÁÖ¼Ò (50 ¹ÙÀÌÆ®)   = ·¹ÄÚµåÀÇ ½ÃÀÛ + 10 ¹ÙÀÌÆ® 
   °í°´ÀÇ ³ªÀÌ (4 ¹ÙÀÌÆ®)    = ·¹ÄÚµåÀÇ ½ÃÀÛ + 10 + 50  
   °í°´ÀÇ ¾ÆÀ̵ð (4 ¹ÙÀÌÆ®)  = ·¹ÄÚµåÀÇ ½ÃÀÛ + 10 + 50 + 4 
            </screen> 
            °í°´ µ¥ÀÌÅͰ¡ ÀúÀåµÈ ·¹ÄÚµåÀÇ ÁÖ¼Ò(address)¸¦ ¾Ë°í ÀÖ´Ù¸é ¿ì¸®´Â °£´ÜÇÑ  
            ¿¬»ê(µ¡¼À)À» ÅëÇØ¼­ °í°´ ·¹Äڵ忡¼­ ¿øÇÏ´Â °¡Á®¿Ã ¼ö ÀÖ´Ù. ±×·¯³ª À§ÀÇ  
            ¹æ¹ýÀ¸·Î µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â ¹æ½ÄÀº ÇѰ¡Áö ´ÜÁ¡À» °¡Áö°í ÀÖ´Ù. À§ÀÇ ¿¹¿¡¼­´Â  
            °í°´ÀÇ ÁÖ¼Ò°¡ 50¹ÙÀÌÆ®·Î Á¦ÇѵǾî Àִµ¥, ÀÌ·± ÀÌÀ¯·Î  50¹ÙÀÌÆ® º¸´Ù  
            ´õ Å« ÁÖ¼Ò°¡ ÀÔ·ÂµÈ °æ¿ì 50¹ÙÀÌÆ® ÀÌÈÄÀÇ ÁÖ¼Ò µ¥ÀÌÅÍ´Â ºÐ½ÇÇØ ¹ö¸°´Ù.  
        </para> 
        <para> 
            À§ÀÇ µ¥ÀÌÅÍ ÀúÀ广½Ä¿¡ µû¸¥ Á¦ÇÑÀ» ¾ø¾Ö±â À§Çؼ­ µ¥ÀÌÅÍÀÇ À§Ä¡¸¸À»  
            °¡¸®Å°´Â(Æ÷ÀÎÆ®)ÇÏ´Â ¹æ¹ýÀÌ »ç¿ëµÈ´Ù. °í°´ÀÇ À̸§À» ¿¹·Î µéÀÚ¸é °í°´ÀÇ  
            À̸§ÀÇ ½ÇÁ¦ µ¥ÀÌÅÍ´Â ¸Þ¸ð¸®ÀÇ ÀÓÀÇÀÇ ¿µ¿ª¿¡ ÀúÀåµÇ°í ·¹Äڵ忡´Â ´ÜÁö  
            °í°´ÀÇ µ¥ÀÌÅͰ¡ ÀúÀåµÈ ¸Þ¸ð¸®ÀÇ ÁÖ¼Ò °ª¸¸À» ¸í½ÃÇÏ´Â ¹æ¹ýÀÌ´Ù.  
            ÀÌ °æ¿ì ¸Þ¸ð¸®´Â ´ÙÀ½°ú °°ÀÌ ±¸¼ºµÉ °ÍÀÌ´Ù. 
            <screen> 
·¹ÄÚµåÀÇ ½ÃÀÛ     
    °í°´ÀÇ À̸§ Æ÷ÀÎÅÍ(4 ¹ÙÀÌÆ®)  = ·¹ÄÚµåÀÇ ½ÃÀÛ 
    °í°´ÀÇ ÁÖ¼Ò Æ÷ÀÎÅÍ(4 ¹ÙÀÌÆ®)  = ·¹ÄÚµåÀÇ ½ÃÀÛ + 4 
    °í°´ÀÇ ³ªÀÌ (4 ¹ÙÀÌÆ®)        = ·¹ÄÚµåÀÇ ½ÃÀÛ + 4 + 4  
    °í°´ÀÇ ¾ÆÀ̵ð (4 ¹ÙÀÌÆ®)      = ·¹ÄÚµåÀÇ ½ÃÀÛ + 4 + 4 + 4  
            </screen> 
            ÀÌ·¸°Ô µÇ¸é °í°´ÀÇ ½ÇÁ¦ µ¥ÀÌÅÍ´Â ¸Þ¸ð¸®ÀÇ ÀÓÀÇÀÇ À§Ä¡¿¡ ÀúÀåµÉ ¼ö ÀÖÀ½À¸·Î  
            ÀԷ°¡´ÉÇÑ ÁÖ¼ÒÀÇ ±æÀÌ¿¡ Á¦ÇÑÀ» ¹ÞÁö ¾Ê¾Æµµ µÈ´Ù.  
        </para> 
    </section> 
    <section> 
        <title>µ¥ÀÌÅÍ Á¢±Ù ¹æ¹ý</title> 
        <para> 
            ÇÁ·Î¼¼½º´Â addressings mode¶ó°í ºÒ¸®¿ì´Â µ¥ÀÌÅÍ¿¡ Á¢±ÙÇÏ´Â  
            ¸î °¡Áö ¹æ½ÄÀ» °¡Áö°í ÀÖ´Ù. °¡Àå °£´ÜÇÑ mode´Â  
            <emphasis>immediate</emphasis>¸ðµå¶ó°í ºÎ¸®´Â °ÍÀ¸·Î µ¥ÀÌÅÍ Á¢±ÙÀÌ  
            ¸í·É(instruction)Àڽſ¡°Ô¼­ ÀÌ·ç¾îÁö´Â ¹æ½ÄÀÌ´Ù.    
        </para> 
    </section> 
</section> 
 
<section> 
    <title>ù¹øÂ° ÇÁ·Î±×·¥ ¸¸µé±â</title> 
    <para> 
        À̹ø Àå¿¡¼­´Â ¸®´ª½º ¾î¼Àºí¸® ÇÁ·Î±×·¥À» ¸¸µå´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¾Ë¾Æº¼ °ÍÀÌ´Ù.  
        ¿©±â¿¡ ´õºÒ¾î ¾î¼Àºí¸® ÇÁ·Î±×·¥ÀÇ ±¸Á¶¿Í ¾î¼Àºí¸® ÇÁ·Î±×·¡¹ÖÀ» ÀÛ¼ºÇϴµ¥  
        ÇÊ¿äÇÑ ¾î¼Àºí¸® ¸í·É¾îµé¿¡ ´ëÇØ¼­µµ ¾Ë¾Æº¼ °ÍÀÌ´Ù.     
    </para> 
    <para> 
        ¿©·¯ºÐÀÌ ÁÖ·Î Áß/°í±Þ ¾ð¾î¸¸À» ´Ù·ç¾î ¿Ô´Ù¸é, ¾Æ¸¶µµ À̵é°ú´Â ÀüÇô´Ù¸¥  
        Àú¼öÁØÀÇ ¾î¼Àºí¸®¾î¿¡ ´çȲÇÒ °ÍÀÌ´Ù. ¾î¼Àºí¸®¾î¿¡ Àͼ÷ÇØÁö´Â ¹æ¹ýÀº  
        ´Ù¸¥ ¾ð¾î¿¡ Àͼ÷ÇØÁö±â À§Çؼ­ »ç¿ëÇß´ø ¹æ¹ýµé°ú µ¿ÀÏÇÏ´Ù. Áï ²ÙÁØÈ÷  
        Äڵ带 Á¢ÇÏ°í ¸¹Àº ½Ã°£¿¡ °ÉÃļ­ ¿¬½ÀÇÏ°í »ý°¢Çϰí ÀÎÅͳÝȤÀº ¼­ÀûÀ»  
        ÅëÇØ¼­ °ü·Ã Á¤º¸¸¦ ¼öÁýÇϰí ÀÚ½ÅÀÇ °ÍÀ¸·Î ¸¸µå´Â °ÍÀÌ´Ù. ¸¹Àº ½Ã°£ÀÌ ÇÊ¿äÇÏ¸ç  
        ½ÃÇàÂø¿À ¿ª½Ã °Þ°Ô µÇ°ÚÁö¸¸ ÀÌ·¯ÇÑ ¸ðµç °ÍµéÀÌ ¾î¼Àºí¸®¾î¸¦ ¿©·¯ºÐÀÇ °ÍÀ¸·Î  
        ¸¸µå´Âµ¥ ¹Ýµå½Ã ÇÊ¿äÇÑ µµ¿òÀÌ µÇ¾îÁÙ °ÍÀÌ´Ù.    
    </para> 
    <section> 
        <title>Entering in the Program</title> 
        <para> 
            °£´ÜÇÑ ÇÁ·Î±×·¥À» ¸¸µå´Â °ÍºÎÅÍ ½ÃÀÛÇØ º¸µµ·Ï ÇÏÀÚ. óÀ½À¸·Î ¸¸µé  
            ÇÁ·Î±×·¥Àº ¾Æ¹«·± ÇÏ´ÂÀÏÀÌ ¾ø´Â -½ÇÇà ÈÄ ¹Ù·Î Á¾·áÇØ ¹ö¸®´Â- ¾îÀÌ ¾ø´Â  
            ÇÁ·Î±×·¥ÀÌÁö¸¸ ¾î¼Àºí¸®¾î¿Í ¸®´ª½º ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ±âº»ÀûÀÎ ¹æ¹ýÀ»  
            º¸¿©ÁØ´Ù. ¿©·¯ºÐÀÌ ÁÁ¾ÆÇÏ´Â ¿¡µðÅÍ·Î ¾Æ·¡ÀÇ ¿¹Á¦¸¦ ÆíÁýÇÑ ´ÙÀ½  
            exit.s À̸§À» °¡Áö´Â ÆÄÀÏ·Î ÀúÀåÇϵµ·Ï ÇÑ´Ù. Áö±Ý ´çÀå ¾Æ·¡ÀÇ ¿¹Á¦ Äڵ尡  
            ÀÌÇØµÇÁö ¾Ê´Â´Ù°í ÇØ¼­ °ÆÁ¤ÇÒ ÇÊ¿ä´Â ¾ø´Ù. ¿ì¼±Àº ¾Æ·¡ÀÇ Äڵ带 ¸¸µé°í  
            ÄÄÆÄÀÏ ÇØ¼­ ½ÇÇà ½Ã۴µ¥¿¡¸¸ ½Å°æ¾²µµ·Ï ÇÑ´Ù. ½ÇÁ¦ Äڵ忡 ´ëÇÑ  
            »ó¼¼ÇÑ ¼³¸íÀº <xref linkend="AssemblyLanguageProgram">¿¡¼­ ´Ù·ê °ÍÀÌ´Ù.   
            <screen> 
# ½ÃÀÛ ÈÄ ¹Ù·Î Á¾·áÇÏ´Â °£´ÜÇÑ ÇÁ·Î±×·¥À¸·Î Á¾·á ÇÒ¶§ 
# ÇÁ·Î±×·¥ÀÇ ¸®ÅϰªÀ» ¸®´ª½º Ä¿³Î¿¡ Àü´ÞÇÑ´Ù. 
# 
 
# ÀÔ·Â : ¾øÀ½ 
# 
 
# Ãâ·Â : ÄÚµåÀÇ Á¾·á°ªÀ» ¸®ÅÏÇÑ´Ù. 
# ÇÁ·Î±×·¥ÀÇ Á¾·á°ªÀº ½©¿¡¼­ ´ÙÀ½°ú °°ÀÌ È®ÀÎ °¡´ÉÇÏ´Ù. 
# echo $? 
# 
 
# º¯¼ö : 
# %eax´Â ½Ã½ºÅÛ È£Ãâ(system call)¹øÈ£¸¦ ÀúÀåÇÑ´Ù. 
# %ebx´Â Á¾·á°ªÀ» ÀúÀåÇÑ´Ù. 
 
.section .data 
.section .text 
.global _start 
 
_start: 
movl $1, %eax    # ¸®´ª½º Ä¿³Î¿¡ exit(2)½Ã½ºÅÛ ÄÝÀ» ¿äûÇÑ´Ù. 
                 # exit(2)ÀÇ ½Ã½ºÅÛ ÄÝ ¹øÈ£´Â 1¹øÀÌ´Ù. 
 
movl $0, %ebx    # ÇÁ·Î±×·¥ÀÌ Á¾·áÇϸ鼭 ¿î¿µÃ¼Á¦¿¡ ³Ñ°ÜÁÙ 
                 # Á¾·á°ªÀÌ´Ù. 
                 # ÇÁ·Î±×·¥ Á¾·áÈÄ ½©»ó¿¡¼­ 
                 # echo $? ·Î È®ÀÎ ÇÒ ¼ö ÀÖ´Ù. 
                 # °ªÀ» ¹Ù²Ù¾î °¡¸é¼­ Å×½ºÆ® ÇØº¸µµ·Ï ÇÏÀÚ. 
 
int $0x80        # exit ½Ã½ºÅÛÄÝÀ» ½ÇÇàÇÑ´Ù. 
            </screen> 
            À§¿Í °°Àº ¹®ÀåµéÀ» ¿ì¸®´Â ¼Ò½ºÄÚµå(source code)¶ó°í ºÎ¸£¸ç, ¼Ò½ºÄڵ尡  
            ÀúÀåµÈ ÆÄÀÏÀ» ¼Ò½ºÆÄÀÏ À̶ó°í ºÎ¸¥´Ù. ¼Ò½ºÄÚµå´Â  
            Àΰ£ÀÌ ½±°Ô ÀÐÀ»¼ö ÀÖµµ·Ï ¸¸µé¾îÁø ÇÁ·Î±×·¥ÀÇ ¾ç½ÄÀÌ´Ù. ±×·¯³ª  
            ¼Ò½ºÄÚµå´Â ÇÁ·Î±×·¥ÀÇ ¾ç½ÄÀÏ »Ó ±× ÀÚü·Î ½ÇÇà°¡´ÉÇÑ ÇÁ·Î±×·¥Àº ¾Æ´Ï´Ù.  
            Àΰ£ÀÌ ÀÌÇØÇϱâ´Â ½±Áö¸¸ ÄÄÇ»ÅÍ´Â Àΰ£ÀÇ ¹®ÀåÀ» ÀÌÇØÇÒ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù.  
            ±×·¡¼­ ¼Ò½ºÄڵ带 ÄÄÇ»ÅͰ¡ ÀÌÇØÇØ¼­ ½ÇÇà °¡´ÉÇϵµ·Ï ±â°èÀÇ ¾ð¾î·Î  
            ¹ø¿ª(transform)ÇÏ´Â ÀÛ¾÷ÀÌ ÇÊ¿äÇÏ°Ô µÈ´Ù. ÀÌ·¯ÇÑ ÀÛ¾÷À» À§Çؼ­  
            <emphasis>assemble</emphasis>¿Í <emphasis>link</emphasis>°¡ »ç¿ëµÈ´Ù.  
        </para> 
        <para> 
            ¸ÕÀú <emphasis>assemble</emphasis>¸¦ ÀÌ¿ëÇØ¼­ ¼Ò½ºÄڵ带 ±â°è¸¦ À§ÇÑ  
            ¸í·ÉÀ¸·Î º¯°æÇØ¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ º¯°æ(ȤÀº ¹ø¿ª) °úÁ¤À» Assembling¶ó°í  
            ÇÑ´Ù. ÀÌ·¯ÇÑ ¾î¼Àºí¸µÀ» À§Çؼ­ <emphasis>as</emphasis>°¡ Á¦°øµÈ´Ù.   
            <screen> 
# as exit.s -o exit.o 
            </screen> 
            <emphasis>as</emphasis>´Â ¼Ò½ºÆÄÀÏÀÎ exit.s¸¦ ¹ø¿ªÇؼ­ ±× °á°ú¸¦  
            exit.o¶ó´ÂÆÄÀÏ¿¡ ¾´´Ù. exit.o¿Í °°Àº ¹ø¿ªµÈ °á°ú¸¦ ´ã°í ÀÖ´Â ÆÄÀÏÀ»  
            <emphasis>object file</emphasis>¶ó°í ºÎ¸¥´Ù. ¿ÀºêÁ§Æ® ÄÚµå´Â ±â°è¾î·Î  
            ÀÌ·ç¾îÁ® ÀÖ´Ù. ¿ÀºêÁ§Æ® Äڵ尡 ±â°è¾î·Î ÀÌ·ç¾îÁ® ÀÖÀ¸´Ï ÀÌ ÀÚü·Î ¿ÏÀüÇÑ  
            ÇÁ·Î±×·¥À̶ó°í »ý°¢ÇÒ ¼ö ÀÖ°ÚÁö¸¸ ±×·¸Áö´Â ¾Ê´Ù. ´ëºÎºÐÀÇ  
            ±Ô¸ð°¡ ÀÖ´Â ÇÁ·Î±×·¥µéÀº ¿©·¯°³ÀÇ ¼Ò½ºÆÄÀÏ·Î ÀÌ·ç¾î Áö°í ÀÌµé ¼Ò½ºÆÄÀϵéÀº 
            °¢°¢ º°°³ÀÇ ¿ÀºêÁ§Æ® ÆÄÀϵéÀ» ¸¸µé¾î ³½´Ù. ±×·¯¹Ç·Î ÀÌ·¯ÇÑ  
            ¿©·¯°³ÀÇ ¿ÀºêÁ§Æ® ÆÄÀϵéÀ» ÇÕÃļ­ ÇϳªÀÇ ½ÇÇàÆÄÀÏ·Î ¸¸µé¾î¾ß ÇÏ´Â  
            ÀÛ¾÷ÀÌ ÇÊ¿äÇÏ°Ô µÈ´Ù. <emphasis>linker</emphasis>¶ó´Â ÇÁ·Î±×·¥À»  
            ÀÌ¿ëÇÏ¸é ¿©·¯°³ÀÇ ¿ÀºêÁ§Æ® ÆÄÀÏÀ» Çϳª·Î ÇÕÃļ­ Ä¿³Î¿¡¼­ ½ÇÇà°¡´ÉÇÑ  
            ÇÁ·Î±×·¥À» ¸¸µé¾î ³¾ ¼ö ÀÖ´Ù. ¸®´ª½º´Â <emphasis>ld</emphasis>¶ó´Â  
            linkerÇÁ·Î±×·¥À» Á¦°øÇÑ´Ù. ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ¿ÀºêÁ§Æ® ÆÄÀÏÀ» ¸µÅ©  
            ½ÃÄѼ­ ¿ÏÀüÇÑ ÇÁ·Î±×·¥À» ¸¸µé¾î ³¾ ¼ö ÀÖ´Ù.  
            <screen> 
# ld exit.o -o exit 
            </screen> 
            À§ÀÇ ¸í·ÉÀº ¿ÀºêÁ§Æ® ÆÄÀÏÀº exit.o¸¦ ¸µÅ©½ÃÄѼ­ ½ÇÇàÆÄÀÏÀÎ exit¸¦  
            ¸¸µé¾î ³½´Ù. ¸¸¾à À§ÀÇ ¸µÅ© °úÁ¤Áß ¿¡·¯°¡ ¹ß»ýÇß´Ù¸é ÇÁ·Î±×·¥ÀÇ ¼Ò½ºÄڵ带 
            À߸ø ÀÛ¼ºÇßÀ» °æ¿ì°¡ ´ëºÎºÐÀÌ´Ù. ÀÌ·± °æ¿ì ¿©·¯ºÐÀº ¼Ò½ºÄڵ带 ÁÖÀÇ  
            ±í°Ô »ìÆì¼­ ¹®Á¦°¡ µÈ ºÎºÐÀ» ¼öÁ¤ÇØ¾ß ÇÑ´Ù. ¼Ò½ºÄڵ忡 ´ëÇÑ ¼öÁ¤ÀÌ  
            ÀÌ·ç¾î Á³´Ù¸é ´Ù½Ã assemble °ú link°úÁ¤À» °ÅÃÄ¾ß ÇÑ´Ù.  
            ¾Æ¹«·± ¹®Á¦°¡ ¾øÀÌ ¸µÅ©±îÁö ¼º°øÇß´Ù¸é ´ÙÀ½°ú °°ÀÌ exit  
            <footnote> 
            <para> 
                À¯´Ð½º¿Í ¸®´ª½º´Â À©µµ¿ì¿Í ´Þ¸® È®ÀåÀÚ(extensions)¸¦ °¡Áú Çʿ䰡  
                ¾ø´Ù. À©µµ¿ìÁî¶ó¸é ½ÇÇàÆÄÀÏÀÇ °æ¿ì .exeµîÀÇ È®ÀåÀÚ¸¦ ¸í½ÃÇØ¾ß ÇÏÁö¸¸ 
                À¯´Ð½º¿¡¼­´Â ¾î¶°ÇÑ È®ÀåÀÚµµ °¡Áú Çʿ䰡 ¾ø´Ù.    
            </para> 
            </footnote> 
 
            ÇÁ·Î±×·¥À» ½ÇÇà ½Ãų ¼ö ÀÖ´Ù.  
            <screen> 
# ./exit 
            </screen> 
            <emphasis>./</emphasis>´Â ÄÄÇ»ÅÍ¿¡°Ô ½ÇÇà½ÃÄÑ¾ß ÇÏ´Â ÇÁ·Î±×·¥ÀÌ ÀϹÝÀûÀÎ  
            ÇÁ·Î±×·¥ ½ÇÇà °æ·Î(PATH)°¡ ¾Æ´Ñ ÇöÀç µð·ºÅ丮¿¡ ÀÖÀ½À» ¾Ë·ÁÁÖ±â  
            À§Çؼ­ »ç¿ëÇÑ´Ù. À§ÀÇ ÇÁ·Î±×·¥À» ½ÇÇà ½ÃÄѺ¸¸é ¾Æ¹«·± º¯È­µµ ¾øÀÌ  
            ´ÙÀ½ ÇÁ·ÒÇÁÆ®°¡ ¶³¾îÁö´Â °É È®ÀÎ ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÇÁ·Î±×·¥Àº ÇÏ´ÂÀÏÀÌ  
            ¾Æ¹« °Íµµ ¾ø´Â °Í °°Áö¸¸ ³»ºÎÀûÀ¸·Î Á¾·áÇϸ鼭 Á¾·á°ªÀ» Ä¿³Î¿¡ µÇµ¹·Á  
            Áִµ¥, ´ÙÀ½°ú °°Àº ¹æ½ÄÀ¸·Î exit ÇÁ·Î±×·¥ÀÇ Á¾·á°ªÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.   
            <screen> 
# echo $? 
            </screen> 
            ¾Æ¸¶µµ 0ÀÌ Ãâ·ÂµÉ °ÍÀÌ´Ù. À̰ÍÀº ¿ì¸®°¡ ¸¸µç exitÇÁ·Î±×·¥ »Ó¸¸ ¾Æ´Ï¶ó  
            ´Ù¸¥ ¸ðµç ÇÁ·Î±×·¥¿¡ °øÅëÀûÀ¸·Î Àû¿ëµÈ´Ù. ¸ðµç ÇÁ·Î±×·¥Àº Á¤»óÀûÀ¸·Î  
            ÁÖ¾îÁø ÀÏÀ» ÇØ°áÇϰí Á¾·á ÇßÀ» ¶§´Â 0À» ¸®ÅÏÇÏ°í ½ÇÆÐÇßÀ» °æ¿ì 0ÀÌ¿ÜÀÇ  
            ´Ù¸¥ ¼ýÀÚ¸¦ ¸®ÅÏÇÑ´Ù. ÀÌ ÇÁ·Î±×·¥ Á¾·á°ªÀ» ÀÌ¿ëÇØ¼­ ÇÁ·Î±×·¡¸Ó´Â  
            ½ÇÇà½ÃÄ×´ø ÇÁ·Î±×·¥ÀÌ ÀÏÀ» Á¦´ë·Î ¼öÇàÇß´ÂÁö ¾Æ´Ï¸é ¾î¶² ¿À·ù°¡ ¹ß»ýÇß´Â 
            Áö¸¦ È®ÀÎÇÒ ¼ö ÀְԵȴÙ. 0Àº Á¤»óÁ¾·á, 1Àº ÆÄÀÏ¿­±â ½ÇÆÐ, 2´Â À߸øµÈ  
            °è»ê µîÀ¸·Î Á¤ÀÇÇØ¼­ °¢ »óȲ¿¡ ¸Â°Ô Á¾·á°ªÀ» ³Ñ±â°í Á¾·áÇÏ¸é µÈ´Ù.  
        </para> 
    </section> 
    <section> 
        <title>¾î¼Àºí¸® ÇÁ·Î±×·¥ÀÇ °³¿ä</title> 
        <para> 
            exit.s¸¦ º¸¸é ¸¹Àº ÁÙÀÌ <emphasis>#</emphasis>ó¸® µÇ¾î ÀÖ´Â°É º¼ ¼ö ÀÖ´Ù.  
            À̰ÍÀº ÁÖ¼®À̶ó°í ºÒ¸®¿î´Ù. ÁÖ¼®Àº ¾î¼Àºí·¯¿¡ ÀÇÇØ¼­ ÇØ¼® µÇÁö ¾Ê´Â  
            ºÎºÐÀ¸·Î ÁÖ·Î ÇÁ·Î±×·¡¸Ó¿¡°Ô ÇÁ·Î±×·¥ Äڵ忡 ´ëÇÑ ¼³¸í, ÈùÆ®µîÀ»  
            ¸í½ÃÇØ¼­ ÇÁ·Î±×·¡¸Ó°¡ Á»´õ ½±°Ô Äڵ带 ÆÄ¾ÇÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ­  
            »ç¿ëµÈ´Ù. Àß ÀÛ¼ºµÈ ÁÖ¼®Àº ÇÁ·Î±×·¥À» ¸¸µé¾î³½ ´ç»çÀÚ »Ó¸¸ ¾Æ´Ï¶ó  
            ÇÁ·Î±×·¥À» Àоî¾ß ÇÏ´Â ´Ù¸¥ (ÆÀµ¿·áµî°ú °°Àº)ÇÁ·Î±×·¡¸Ó¿¡°Ô ¸¹Àº µµ¿òÀ»  
            ÁØ´Ù. Àß ÀÛ¼ºµÈ ÁÖ¼®Àº ´ÙÀ½°ú °°Àº ¿ä¼ÒµéÀ» °¡Áø´Ù.    
            <itemizedlist>     
                <listitem> 
                <para> 
                    Äڵ尡 ÇÏ´ÂÀÏ 
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    ÄÚµåÀÇ ´ë·«ÀûÀÎ È帧 
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    ÁÖÀǸ¦ ±â¿ï¿©¾ß ÇÒ¸¸ÇÑ ¿©·¯°¡Áö ƯÀÌ»çÇ×µé     
                    <footnote> 
                    <para> 
                        °°Àº ÀÏÀ» ÇÏ´Â ÇÁ·Î±×·¥ÀÌ¶óµµ ¸Å¿ì ´Ù¾çÇÑ ¹æ¹ýÀ¸·Î  
                        ÀÛ¼ºµÉ ¼ö ÀÖ´Ù. ÀϹÝÀûÀÎ ¹æ¹ýÀÌ »ç¿ëµÉ ¼ö ÀÖÁö¸¸ ¿©·¯ºÐ¸¸ÀÇ  
                        ³ëÇϿ츦 ÀÌ¿ëÇØ¼­ ÀÛ¼ºµÉ ¼ö ÀÖÀ¸¸ç, À̰æ¿ì ´Ù¸¥ ÇÁ·Î±×·¡¸Ó°¡  
                        Äڵ带 ºÐ¼®Çϴµ¥ ¹®Á¦°¡ µÉ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ Æ¯ÀÌ »çÇ×µéÀ»  
                        ¸í½ÃÇØ µÎ¸é ´Ù¸¥ ÇÁ·Î±×·¡¸Ó¿¡°Ô ¸¹Àº µµ¿òÀ» ÁÙ ¼ö ÀÖ´Ù.    
                    </para> 
                    </footnote> 
                </para> 
                </listitem> 
            </itemizedlist>     
        </para> 
        <para> 
            ¸î °³ÀÇ ÁÖ¼®ÈÄ¿¡ ´ÙÀ½°ú °°Àº ÁÙÀÌ µîÀåÇÑ´Ù.  
            <screen> 
.section .data 
            </screen> 
             
        </para> 
        <para> 
            <screen> 
.section .text 
            </screen> 
            ÅØ½ºÆ® ¼½¼ÇÀÌ ½ÃÀÛÇÔÀ» ¾Ë¸°´Ù. ÅØ½ºÆ® ¼½¼Ç¿¡´Â ÇÁ·Î±×·¥ ¸í·É 
            (¾î¼Àºí¸® Äڵ尡 À§Ä¡ÇÑ´Ù)  
        </para> 
        <para> 
            <screen> 
.globl _start 
            </screen> 
        </para> 
        <para> 
_start: 
        </para> 
        <para> 
            ÀÌÁ¦ ½ÇÁ¦ÀûÀΠĿǻÅÍ ¸í·ÉÀÌ µîÀåÇÑ´Ù. óÀ½ µîÀåÇÑ ¸í·ÉÀº  
            ´ÙÀ½°ú °°´Ù.  
            <screen> 
movl $1, %eax 
            </screen> 
            ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ¾úÀ» ¶§ À̸í·ÉÀº ¼ýÀÚ1À» %eax ·¹Áö½ºÅÍ¿¡ ³Ö¾î¶ó°í  
            ÇØ¼®ÇÑ´Ù. ¾î¼Àºí¸®¾î¿¡ »ç¿ëµÇ´Â ¸¹Àº ¸í·ÉÀº ¿ÀÆÛ·£µå(operands)¸¦  
            °¡Áø´Ù. À§ÀÇ movl¸í·ÉÀº <emphasis>source</emphasis>¿Í  
            <emphasis>destination</emphasis> µÎ°³ÀÇ ¿ÀÆÛ·£µå¸¦ °¡Áø´Ù.  
            ÀÌ °æ¿ì source´Â ¼ýÀÚ 1ÀÌ µÇ°í destinationÀº %eax·¹Áö½ºÅͰ¡  
            µÈ´Ù. ¿ÀÆÛ·£µå´Â ¼ýÀÚ, ÂüÁ¶ ¸Þ¸ð¸® À§Ä¡ ȤÀº ·¹Áö½ºÅͰ¡  
            ¿Ã ¼ö ÀÖ´Ù. ¸í·ÉÀº ±× Á¾·ù¿¡ µû¶ó¼­ °¢°¢ ´Ù¸¥ Çü½ÄÀÇ ¿ÀÆÛ·£µå¸¦  
            °¡Áö°Ô µÈ´Ù. °¢ ¸í·ÉÀÌ °¡Áú ¼ö ÀÖ´Â ¿ÀÆÛ·£µåÀÇ Á¤º¸´Â  
            Appendix B¸¦ Âü°íÇϱ⠹ٶõ´Ù.   
        </para> 
        <para> 
            ¸í·É¿¡ µû¶ó¼­ ¿ÀÆÛ·£µåÀÇ Çü½ÄÀÌ ´Þ¶óÁö±ä ÇÏÁö¸¸, ´ëºÎºÐÀÇ  
            ¸í·ÉÀº 2°³ÀÇ ¿ÀÆÛ·£µå¸¦ °¡Áø´Ù. ù¹øÂ°·Î µîÀåÇÏ´Â ¿ÀÆÛ·£µå¸¦  
            source ¿ÀÆÛ·£µå, µÎ¹øÂ°·Î µîÀåÇÏ´Â ¿ÀÆÛ·£µå¸¦ destination ¿ÀÆÛ·£µå 
            ¶ó°í ÇÑ´Ù. ÀÌ·±·ùÀÇ ¸í·ÉÀ¸·Î´Â addl, subl, imulµîÀÌ ÀÖ´Ù.  
            ÀÌµé ¸í·ÉÀº °¢°¢ "´õÇϱâ","»©±â","°öÇϱâ" ¿¬»êÀ» ÇÏ¸ç  
            source ¿ÀÆÛ·£µå·Î ºÎÅÍ destination ¿ÀÆÛ·£µå·Î ¿¬»êÀ» ÇÏ°í °á°ú´Â  
            destination ¿ÀÆÛ·£µå¿¡ ÀúÀåµÈ´Ù.  
        </para> 
        <para> 
            x86ÇÁ·Î¼¼½º´Â movl¸í·É¿¡ ÀÌ¿ëÇÒ¼ö ÀÖ´Â ¿©·¯°³ÀÇ general-purpose  
            ·¹Áö½ÃÆ®·² °¡ÁöÀÖ´Ù.  
            <itemizedlist> 
            <listitem> 
                <para> 
                    %eax     
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    %ebx 
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    %ecx     
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    %edi 
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    %esi 
                </para> 
            </listitem> 
            </itemizedlist> 
            À̵é gerneal-purpose ·¹Áö½ºÅÍ¿Í ÇÔ²² ¸î°³ÀÇ special-purpose  
            ·¹Áö½ºÅ͵µ °¡Áö°í ÀÖ´Ù.   
            <itemizedlist> 
            <listitem> 
                <para> 
                    %ebp 
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    %esp 
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    %eip 
                </para> 
            </listitem> 
            </itemizedlist> 
            ÀÌµé ·¹Áö½ºÅÍÁß¿¡´Â %eip¿Í %eflags¿Í °°Àº Ưº°ÇÑ ¸í·É¿¡¸¸  
            Á¢±Ù°¡´ÉÇÑ ·¹Áö½ºÅ͵éÀÌ ÀÖ´Ù. ¿ì¼±Àº ÀÌÁ¤µµ¸¸ ¼³¸íÇϵµ·Ï ÇϰڴÙ. 
            ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº ³ªÁß¿¡ ¼³¸íÇÒ ±âȸ°¡ ÀÖÀ» °ÅÀÌ´Ù.   
        </para> 
        <para> 
            ÀÌÁ¦ <emphasis>movl</emphasis>¸í·ÉÀº ¼ýÀÚ 1À» %eax·¹Áö½ºÅÍ·Î   
            ¿Å±â´Â ÀÛ¾÷À» ¼öÇàÇÔÀ» ÀÌÇØÇßÀ» °ÍÀÌ´Ù. 1¾Õ¿¡ º¸¸é ´Þ·¯Ç¥½Ã°¡  
            Àִµ¥, ÀÌ´Â immediate mode addressingÀ» ÀÌ¿ëÇÒ °ÍÀ» ¸í½ÃÇ챉  
            À§Çؼ­ »ç¿ëÇÑ´Ù. ´Þ·¯Ç¥½Ã°¡ ¾ø´Ù¸é direct addressingÀ» ÀÌ¿ëÇÏ°Ô  
            µÇ°í ÁÖ¼Ò 1¿¡ ÀÖ´Â ¾î¶² °ªÀ» ÀÐ¾î µéÀÌ°Ô µÈ´Ù. ¿ì¸®´Â ½ÇÁ¦ ¼ýÀÚ  
            1À» ÀоîµéÀ̱⸦ ¿øÇϹǷΠimmeiate mode¸¦ »ç¿ëÇß´Ù.     
        </para> 
        <para> 
            ¿ì¸®°¡ ¼ýÀÚ 1À» %eax¿¡ ¿Å±ä ÀÌÀ¯´Â ƯÁ¤ÀÛ¾÷À» À§Çؼ­ Linux  
            Ä¿³ÎÀ» Áغñ½Ã۱â À§ÇÔÀÌ´Ù. ¼ýÀÚ 1Àº ½Ã½ºÅÛ ÄÝ(system call) 
            ¹øÈ£ 1¹øÀÎ <emphasis>exit</emphasis>¸¦ °¡¸®Å²´Ù. ½Ã½ºÅÛÄÝÀº  
            ¿î¿µÃ¼Á¦¿¡ ¾î¶² µµ¿òÀ» ¿äûÇϱâ À§Çؼ­ »ç¿ëµÇ´Â °ÍÀÌ´Ù. ½Ã½ºÅÛÄÝ¿¡  
            ´ëÇØ¼­´Â Á¶¸¸°£ ÀÚ¼¼È÷ ´Ù·ç°Ô µÉ °ÍÀÌ´Ù. ÆÄÀÏÀ» ¿­°Å³ª  
            ¸Þ¸ð¸® ÇÒ´çÀ» ¿äûÇϰųª Çϱâ À§Çؼ­´Â ÇØ´ç ½Ã½ºÅÛ ÄÝ¿¡ ¸ÅÇεǴ      
            ¹øÈ£¸¦ %eax¿¡ ½áÁÖ¸é µÈ´Ù. ÀÌµé ½Ã½ºÅÛ ÄÝ ¹øÈ£´Â ¿î¿µÃ¼Á¦¸¶´Ù  
            ¾à°£¾¿ ´Ù¸£´Ù.    
        </para> 
        <para> 
            ¿î¿µÃ¼Á¦¿¡ ¾î¶² ÀÏÀ» ¿äûÇϱâ À§Çؼ­ ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇÑ´Ù°í  
            Çߴµ¥, ½Ã½ºÅÛÄÝ ¹øÈ£ ¸¸À¸·Î ÇÒ ¼ö ÀÖ´Â ÀÏÀº Á¸ÀçÇÏÁö ¾Ê´Â´Ù.  
            ¾î¶² ¿äûÀ» ¼öÇàÇϵµ·Ï Çϱâ À§Çؼ­´Â Ä¿³Î¿¡ Á»´õ ¸¹Àº Á¤º¸¸¦  
            ¾Ë·ÁÁà¾ß ÇÑ´Ù. ÆÄÀÏÀ» ¿©´Â °ÍÀ» ¿¹·Î µé¾îº¸¸é "ÆÄÀÏÀ» ¿­¾î¶ó"¶ó´Â  
            ¿äû ¿Ü¿¡µµ ÆÄÀÏÀ̸§ÀÌ ¹«¾ðÁö, ¾î¶² »óÅ·Π¿­°ÇÁö µîÀ» Ä¿³Î¿¡°Ô  
            ¾Ë·ÁÁÖ¾î¾ß¸¸ ÇÑ´Ù. ÀÌ·¯ÇÑ ºÎ°¡ÀûÀÎ Á¤º¸¸¦ parameters(ÀÎÀÚ)¶ó°í  
            ºÎ¸£¸ç ÀÌµé °ª ¿ª½Ã ·¹Áö½ºÅ͸¦ ÅëÇØ¼­ Ä¿³Î¿¡ Àü´ÞµÈ´Ù.  
            exit ½Ã½ºÅÛÄÝÀÇ °æ¿ì ÄÁ³ÎÀº ÀÎÀÚ·Î Á¾·á°ªÀ» ¿ä±¸ÇÑ´Ù. ÀÌ °ªÀº  
            %ebx¿¡¼­ ÀÐÇô Áø´Ù. ÀÌ Á¾·á °ªÀº ½Ã½ºÅÛ¿¡ ¸®ÅϵǾîÁú °ÍÀÌ°í  
            ¿©·¯ºÐÀº <emphasis>echo $?</emphasis>¸¦ ÅëÇØ¼­ ¸®ÅϰªÀ» ÀÐÀ» ¼ö  
            ÀÖ°Ô µÈ´Ù. %ebx¿¡ 0À» ¿Ã¸®±â À§Çؼ­´Â ´ÙÀ½°ú °°Àº Äڵ尡 ÇÊ¿äÇÏ´Ù.   
            <screen> 
movl %0, %ebx 
            </screen> 
            ¸®´ª½º´Â ½Ã½ºÅÛÄÝÀ» ¸¸µé±â Àü¿¡ ÀÎÀÚÀÇ °ªÀ» Àбâ À§Çؼ­  
            ·¹Áö½ºÅÍÀÇ °ªÀ» ¿ä±¸ÇÑ´Ù. %eax´Â ¾ðÁ¦³ª ½Ã½ºÅÛÄÝ ¹øÈ£¸¦ ¿Ã¸®±â  
            À§Çؼ­ »ç¿ëµÇ¸ç ÀÎÀÚ¸¦ ¿Ã¸®±â À§Çؼ­ ´Ù¸¥ ·¹Áö½ºÅ͵éÀ» »ç¿ëÇÏ°Ô  
            µÈ´Ù. exit ½Ã½ºÅÛÄÝ¿¡¼­ º¸¸é Á¾·á »óŸ¦ ÀúÀåÇϱâ À§Çؼ­  
            %ebx¸¦ ÇÊ¿ä·Î ÇÔÀ» ¾Ë ¼ö ÀÖ´Ù. °¢°¢ÀÇ ½Ã½ºÅÛÄÝÀÌ ÇÊ¿ä·Î ÇÏ´Â  
            ÀÎÀÚÀÇ °¹¼ö°¡ ¼­·Î ´Ù¸£´Ù. À̵鿡 ´ëÇÑ Á¤º¸´Â Appendix C¸¦  
            Âü°íÇϱ⠹ٶõ´Ù.   
        </para> 
        <para> 
            ´ÙÀ½À¸·Î ¾Æ·¡¿Í °°Àº »ó´çÈ÷ ¼ö»óÇÑ ¸í·ÉÀÌ ³»·ÁÁø´Ù.   
            <screen> 
int $0x80 
            </screen> 
            int ´Â C¿¡¼­ Á¤¼öÇüÀ» ³ªÅ¸³»´Â int°¡ ¾Æ´Ï´Ù.  
            <emphasis>interrupt</emphasis>ÀÇ ÁÙÀÓ¸»ÀÌ´Ï È¥µ¿ÇÏÁö ¾Êµµ·Ï ÇÏÀÚ.  
            0x80Àº »ç¿ëÇÒ ÀÎÅÍ·´Æ®ÀÇ ¹øÈ£´Ù. 
            ÇÁ·Î±×·¥ÀÇ ¼öÇàÁß <emphasis>interrupt</emphasis>°¡ °É¸®°Ô µÇ¸é  
            ÇÁ·Î±×·¥ÀÇ Á¦¾î°¡ Ä¿³Î·Î ³Ñ¾î°¡°Ô µÇ°í Ä¿³ÎÀº ÇÁ·Î±×·¥ÀÌ ¿äûÇÑ  
            ½Ã½ºÅÛÄÝÀ» ¼öÇàÇÏ°Ô µÈ´Ù. À̰ÍÀº ¹èÆ®¸Ç¿¡°Ô ±¸Á¶¿äûÀ» Çϱâ À§Çؼ­  
            ½ÅÈ£¸¦ º¸³»´Â °úÁ¤°ú °°´Ù. ¿©·¯ºÐÀº Çʿ信 ÀÇÇØ¼­ ¹èÆ®¸Ç¿¡°Ô  
            ½ÅÈ£¸¦ º¸³»°í ¹èÆ®¸ÇÀº ¿©·¯ºÐÀ» ±¸Á¶ÇÏ·¯ ¿Â´Ù. ±¸Á¶°¡ µÈÈÄ¿¡´Â ? 
            ¹°·Ð ÀÏ»ó»ýȰ·Î µÇµ¹¾Æ °¡°Ô µÉ°ÍÀÌ´Ù. ¸¶Âù°¡Áö·Î  
            Ä¿³ÎÀÌ ÇÊ¿äÇÑ ÀÏÀ» ¸¶Ä¡°Ô µÇ¸é Á¦¾î±ÇÀº ÇÁ·Î±×·¥À¸·Î ´Ù½Ã ³Ñ¾î 
            °¡°Ô µÈ´Ù. ¸¸¾à interrupt ½ÅÈ£¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù¸é ¾î¶°ÇÑ ½Ã½ºÅÛ  
            Äݵµ ¼öÇàµÇÁö ¾ÊÀ» °ÍÀÌ´Ù.   
        </para> 
        <para> 
            ÀÌÁ¦ ³²Àº ÀÏÀº Äڵ带 assemble½Ã۰í, ¸µÅ© ½ÃŰ°í ½ÇÇàÇÏ´Â  
            ÀÏÀÌ´Ù. Å×½ºÆ®¸¦ À§Çؼ­ ¾î¼Àºí¸® ÄÚµåÀÇ %ebx¸¦ ´Ù¸¥ °ªÀ¸·Î  
            ¹Ù²ÛÈÄ <emphasis>echo $?</emphasis>ÀÇ Ãâ·Â°ªÀÌ º¯ÇÏ´Â°É È®ÀÎÇØ  
            º¸±â ¹Ù¶õ´Ù. ´ç¿¬ÇÏÁö¸¸ %ebx°ªÀ» º¯°æÇÑ´ÙÀ½¿¡´Â  
            assemble->¸µÅ©->½ÇÇà °úÁ¤À» °ÅÃÄ¾ß º¯°æµÈ ³»¿ëÀÌ Àû¿ëµÈ´Ù.   
        </para> 
    </section> 
    <section> 
        <title>Planning the Program</title> 
        <para> 
            À̹ø ÇÁ·Î±×·¥Àº Á»´õ º¹ÀâÇÑ ÀÏÀ» ÇϰԵȴÙ. ¿©·¯°³ÀÇ ¼ýÀÚ°¡  
            ÁÖ¾îÁö°í ÀÌÁß °¡Àå Å« ¼ýÀÚ¸¦ ã´Â ÀÏÀ» ÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.  
            ÄÄÇ»ÅÍ´Â ÇÁ·Î±×·¡¸Ó°¡ ÇÊ¿äÇÑ ¸ðµç°ÍÀ» ¼¼¹ÐÇÏ°Ô ÁöÁ¤ÇØÁà¾ß ÇÏ´Â  
            ±â°è´Ù. ±×·¯¹Ç·Î ¿øÇϴµ¥·Î ÀÛµ¿ÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇϱ⠿øÇÏ´Ù¸é  
            ÀÛ¼ºÀü¿¡ ÇÁ·Î±×·¥¿¡ ´ëÇÑ ¸í¼¼¼­¸¦ ¸¸µé¾î ÁÖ¾î¾ß ÇÑ´Ù.  
            ¿ì¸®°¡ ¸¸µé°íÀÚ ÇÏ´Â ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº ¸í¼¼¿¡ ´ëÇÑ Á¤Àǰ¡  
            ÀÖ¾î¾ß ÇÒ °ÍÀÌ´Ù.   
            <orderedlist> 
                <listitem> 
                <para> 
                    ¼ýÀÚÀÇ ¸ñ·ÏÀ» ¾îµð¿¡ ÀúÀåÇÒ °ÍÀΰ¡.         
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    °¡Àå Å« ¼ýÀÚ¸¦ ã±â À§Çؼ­ ¾î¶°ÇÑ ÇÁ·Î½ÃÁ®¸¦ ÇÊ¿ä·Î Çϴ°¡. 
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    ÇÁ·Î½ÃÁ®¸¦ ¼öÇàÇϱâ À§Çؼ­ ¾î´ÀÁ¤µµÀÇ °ø°£À» ÇÊ¿ä·Î Çϴ°¡ 
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    °ø°£Àº ·¹Áö½ºÅÍ¿¡¼­ È®º¸ÇÒ °ÍÀΰ¡ ¾Æ´Ï¸é ¸Þ¸ð¸®¸¦ ÀÌ¿ëÇÒ  
                    °ÍÀΰ¡.      
                </para> 
                </listitem> 
            </orderedlist> 
            ¿©·¯ºÐÀº ¸î°³ÀÇ ¼ýÀÚ Áß¿¡¼­ °¡Àå Å« ¼ýÀÚ¸¦ ã´Â ÀÏÀ» Çϱâ À§Çؼ­  
            ¾î¶² °èȹÀ» ¼¼¿î´Ù°Å³ª ÇÏÁö´Â ¾ÊÀ» °ÍÀÌ´Ù. ÀÌ·± ÀÏÀº ±×³É ´ÚÄ¡¸é  
            Çѹø¿¡ ¾²À¹ º¸°í °¡Àå Å« ¼ýÀÚ¸¦ °ñ¶ó ³¾ °ÍÀÌ´Ù. ¹°·Ð ¼ýÀÚÀÇ  
            ¸ñ·ÏÀÌ ¸¹´Ù¸é ¾à°£ÀÇ °èȹÀ» ¼¼¿ö¾ß ÇϰÚÁö¸¸ Å« ¹®Á¦°¡ µÇÁö´Â  
            ¾ÊÀ» °ÍÀÌ´Ù - ½Ã°£ÀÌ Á» °É¸®±ä ÇϰÚÁö¸¸ -. ¿ì¸®ÀÇ µÎ³ú°¡ °æÇè°ú  
            ÇнÀ¿¡ ÀÇÇØ¼­ °ÅÀÇ ¹Ý»çÀûÀ¸·Î ±×·¯ÇÑ ÀÏÀ» ó¸®Çϱ⠶§¹®ÀÌ´Ù.  
            ¿©·¯°³ÀÇ ¼ýÀÚ ¸ñ·ÏÁß¿¡ °¡Àå Å« ¼ýÀÚ¸¦ ã¾Æ¾ß ÇÑ´Ù¸é, ºÐ¸í ¿©·¯ºÐÀº  
            ¾Õ¿¡¼­ ¼ýÀÚ¸¦ ÀÐ¾î °¡¸é¼­ ¾ÕÀÇ ¼ýÀÚ º¸´Ù ´õ Å©´Ù¸é ±×°ÍÀ» ¸Ó¸®¿¡  
            »õ°Ü µÎ°í, ¸Ó¸®¿¡ »õ°ÜµÐ ¼ýÀÚ º¸´Ù ´õ Å« ¼ýÀÚ°¡ ³ª¿Â´Ù¸é ¼ýÀÚ¸¦  
            ¹Ù²ãÄ¡±â ÇÒ °ÍÀÌ´Ù. °á±¹ ¸¶Áö¸· ¼ýÀÚ±îÁö ¸ðµÎ È®ÀÎÇÑ´Ù¸é ¸Ó¸®¿¡  
            ³²¾Æ ÀÖ´Â ¼ö°¡ °¡Àå Å« ¼ö°¡ µÈ´Ù. ÀÌ·¯ÇÑ °úÁ¤Àº °ÅÀÇ ÀÚµ¿À¸·Î  
            ÀÌ·ç¾îÁø´Ù.   
        </para> 
        <para> 
            ÄÄÇ»ÅÍÀÇ °æ¿ì ÀÌ·¯ÇÑ °úÁ¤À» ´Ü°èº°·Î ¾Ë·ÁÁÖ¾î¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ  
            ´Ü°è¸¦ ¸íÈ®È÷ Á¤ÀÇ Çϱâ À§Çؼ­ ¾à°£ÀÇ °èȹÀÌ ÇÊ¿äÇÏ°Ô µÈ´Ù.    
            ¿ì¼± °¡Àå Å« ¼ýÀÚ¸¦ °í¸£±â À§Çؼ­ »ç¿ëµÉ ¼ýÀÚÀÇ ¸ñ·ÏÀÌ ÀÖÀ» °ÍÀ̸ç 
            ÀÌµé ¼ýÀÚÀÇ ¸ñ·ÏÀº ¸Þ¸ð¸® °ø°£¿¡ ÀúÀåµÇ¾î¾ß ÇÒ °ÍÀÌ´Ù. À̵éÀº 
            <emphasis>data_items</emphasis>°¡ °¡¸®Å°´Â ¸Þ¸ð¸®¿¡ ÀúÀåÇϵµ·Ï  
            °èȹÇϰڴÙ. ¿ì¸®´Â ¶ÇÇÑ ¼ýÀÚ¸ñ·Ï¿¡¼­ ÇöÀç À§Ä¡¸¦ ÀÐ¾î ¿Ã ¼ö ÀÖ¾î¾ß 
            ÇÑ´Ù. ±×·¡¾ß °ËÅäÇØ¾ßÇÒ ¼ýÀÚ¸¦ ÀÐ¾î ¿Ã ¼ö Àֱ⠶§¹®ÀÌ´Ù. ±×¸®°í  
            °¡ÀåÅ« ¼ýÀÚ¸¦ ÀúÀåÇϱâ À§ÇÑ °ø°£µµ ¸¶·ÃµÇ¾î¾ß ÇÑ´Ù. ÀÌµé ¼ýÀÚ 
            Á¤º¸¸¦ ÀúÀåÇϱâ À§Çؼ­ ´ÙÀ½°ú °°Àº ·¹Áö½ºÅ͸¦ »ç¿ëÇϵµ·Ï °èȹÇß´Ù.  
            <itemizedlist> 
                <listitem> 
                    <para> 
                        %edi ´Â ¸ñ·Ï¿¡¼­ ÇöÀçÀÇ À§Ä¡¸¦ ÀúÀåÇÑ´Ù.  
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        %ebx ´Â ÇöÀç ¸ñ·Ï¿¡¼­ °¡Àå Å« ¼ýÀÚ¸¦ ÀúÀåÇÑ´Ù.  
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        %eax ´Â °ËÅäÇÒ ¼ýÀÚ¸¦ ÀúÀåÇϱâ À§Çؼ­ »ç¿ëÇÑ´Ù.  
                    </para> 
                </listitem> 
            </itemizedlist> 
            ÇÑ °¡Áö ¿¹¿ÜÀûÀ¸·Î ó¸®ÇؾßÇÒ ¼ýÀÚ°¡ Àִµ¥, ¹Ù·Î ¸ñ·ÏÀÇ °¡Àå  
            óÀ½ °¡Á®¿Â ¼ýÀÚÀÌ´Ù. ÀÌ ¼ýÀÚ´Â ´Ù¸¥ ¾î¶² ¼ýÀڿ͵µ ºñ±³ÇÒ ¼ö  
            ¾øÀ¸¹Ç·Î ÀÚµ¿ÀûÀ¸·Î °¡Àå Å« ¼ýÀÚ°¡ µÇ¾î¾ß ÇÒ°ÍÀÌ´Ù. ÀÌ·¯ÇÑ  
            ¼Õ½¬¿î ¼öÇàÀ» À§Çؼ­ ÇöÀç À§Ä¡°¡ °¡¸®Å°´Â ¼ýÀÚ¸¦ 0À¸·Î ÇÏ¸é  
            µÈ´Ù. ±×·¯¸é ¸ñ·ÏÀÇ Ã³À½ ¼ýÀÚ´Â 0°ú ºñ±³µÇ°í ÇöÀç ½ÃÁ¡¿¡¼­ °¡Àå  
            Å« ¼ýÀÚ·Î %ebx¿¡ ÀúÀåµÉ °ÍÀÌ´Ù. ±× ´ÙÀ½¿¡´Â ¸ñ·ÏÀÇ ´ÙÀ½ ¼ýÀÚ¿Í  
            ¹è±³ÇÏ¸é µÈ´Ù. ÀÌ·¯ÇÑ °úÁ¤À» ¼ø¼­´ë·Î ±â¼úÇØ º¸µµ·Ï ÇÏÀÚ.  
            <orderedlist> 
                <listitem> 
                <para> 
                    ¸ñ·ÏÀÇ Ã³À½ ¼ýÀÚ°¡ 0ÀÎÁö È®ÀÎÇÑ´Ù. 
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    ¸¸¾à 0À̶ó¸é Á¾·á(exit)ÇÑ´Ù. 
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    ÇöÀç À§Ä¡¸¦ 1Áõ°¡ ½ÃŲ´Ù(%edi)  
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    ´ÙÀ½ °ªÀ» ÀÐ¾î ¿Í¼­ %eax ·¹Áö½ºÅÍ¿¡ °ªÀ» ÀúÀåÇÑ´Ù.   
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    ÇöÀç °ª %eax¿Í °¡Àå Å« °ª %ebx¸¦ ºñ±³ÇÑ´Ù.    
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    ¸¸¾à ÇöÀç °ªÀÌ ÃÖ±ÙÀÇ °¡Àå Å« °ª º¸´Ù Å©´Ù¸é ÇöÀç °ªÀ»  
                    %ebx¿¡ ÀúÀåÇÑ´Ù.   
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    ¹Ýº¹ÇÑ´Ù. 
                </para> 
                </listitem> 
            </orderedlist> 
            À̰ÍÀ» ÇÁ·Î½ÃÁ®(procedure, ÀÇ»çÁøÇà)À̶ó°í ÇÑ´Ù. ÇÁ·Î½ÃÁ®¸¦  
            ÀÛ¼ºÇÏ´Ù º¸¸é ¸Å¿ì ÀÚÁÖ <emphasis>¸¸¾à(if)</emphasis>¶ó´Â ´Ü¾î°¡  
            µîÀåÇÔÀ» º¼ ¼ö ÀÖ´Ù. À̰ÍÀº ÁøÇà(È帧)À» ºÐ±â ½Ã۱â À§Çؼ­  
            »ç¿ëÇÑ´Ù. if ´ÙÀ½¿¡ ÁÖ¾îÁø Á¶°ÇÀ» ¸¸Á·ÇÏ´À³Ä ±×·¸Áö ¾Ê´À³Ä¿¡  
            µû¶ó¼­ ¼öÇàÇÏ´Â ¸í·ÉÀÌ ´Þ¶óÁö°Ô µÈ´Ù.  
            2 ¹øÀ» º¸¸é %eaxÀÇ °ªÀÌ 0ÀÎÁö ¾Æ´ÑÁö¿¡ µû¶ó È帧À» ºÐ±â ½ÃŰ°í  
            ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù. %eax°¡ 0À̶ó´Â °ÍÀº ¿ì¸®°¡ óÀ½ ¼³Á¤Çß´ø  
            µ¥·Î ¸ñ·ÏÀ» ³¡À» ³ªÅ¸³»´Â °ÍÀ̹ǷΠ´õÀÌ»ó È帧À» ÁøÇà ½Ãų  
            Çʿ䰡 ¾ø±â ¶§¹®ÀÌ´Ù. 0ÀÌ ¾Æ´Ï¶ó¸é ¸ñ·ÏÀÇ ´ÙÀ½ °ªÀ» °¡¸®Å°µµ·Ï  
            Çϰí 4, 5, 6À» ÁøÇàÇϸ鼭  
            ÀÌÀüÀÇ °¡Àå Å«°ª°ú ºñ±³Çؼ­ ´õ Å« °ªÀ» %ebx¿¡ ÀúÀåÇÑ´Ù.  
            ±×¸®°í ÇÁ·Î±×·¥Àº ¾ÆÁ÷ ¸ñ·ÏÀÇ ¸¶Áö¸·±îÁö ¼ýÀÚµéÀ» Á¶»çÇÏÁö ¾Ê¾Ò 
            À¸¹Ç·Î ´Ù½Ã 2 ¹øÀ¸·Î °¡¼­ Áö±Ý±îÁöÀÇ ºñ±³ÀÛ¾÷À» ¹Ýº¹ÇÑ´Ù.   
        </para> 
        <para> 
            if ÀÇ È帧À» ºÐ±âÇѴٴ Ư¼º ¶§¹®¿¡  
            <emphasis>È帧Á¦¾î(flow control)</emphasis>¸í·ÉÀ̶ó°í  
            ºÎ¸¥´Ù. ÀÌÀü¿¡ ´Ù·ç¾ú´ø ù¹øÂ° ¾î¼Àºí¸® ÇÁ·Î±×·¥Àº ¾î¶°ÇÑ  
            È帧Á¦¾î ¸í·Éµµ Æ÷ÇÔÇϰí ÀÖÁö ¾Ê¾Ò´Ù. ´ÜÁö ÇϳªÀÇ È帧¸¸ÀÌ  
            Á¸ÀçÇß¾ú±â ¶§¹®ÀÌ´Ù. ±×·¯³ª ÀÌ ÇÁ·Î±×·¥Àº Á»´õ ´Ù¾çÇÑ ¹æ¹ýÀ¸·Î  
            µ¥ÀÌÅ͸¦ ´Ù·ç¾î¾ß Çϱ⠶§¹®¿¡ È帧Á¦¾î ¸í·ÉÀÌ ÇÊ¿äÇØ Áö°Ô µÈ´Ù.   
        </para> 
        <para> 
            È帧Á¦¾î ¸í·É ¿Ü¿¡µµ ÀÌÇÁ·Î±×·¥ÀÌ ¿Ï¼ºµÇ±â À§ÇØ 2°³ÀÇ ´Ù¸¥  
            »õ·Î¿î ¸í·ÉµéÀÌ »ç¿ëµÉ °ÍÀÌ´Ù. conditional jump¿Í unconditional jump°¡ 
            ±×°ÍÀε¥, conditional jump´Â Á¶°Ç Á¡ÇÁ·Î Á¶°ÇÀ» ¸¸Á·ÇÏ´ÂÁö¸¦ ÆÇ´ÜÇØ¼­  
            ƯÁ¤ ·çƾÀ¸·Î À̵¿Çϱâ À§Çؼ­ »ç¿ëÇÑ´Ù. uncoditional jump´Â ¹«Á¶°Ç Á¡ÇÁ·Î  
            Á¶°ÇÀÇ ¸¸Á·°ú °ü°è¾øÀÌ ÁöÁ¤ÇÑ ·çƾÀ¸·Î À̵¿½ÃŲ´Ù. À̵é jump¿¡ ´ëÇÑ  
            ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ Àå¿¡¼­ ´Ù·ç°Ô µÉ °ÍÀÌ´Ù.  
        </para> 
        <para> 
            È帧Á¦¾î¸¦ À§ÇØ »ç¿ëµÇ´Â ¶Ç´Ù¸¥ ÀåÄ¡´Â ·çÇÁ(loop)ÀÌ´Ù. ·çÇÁ´Â  
            ¹Ýº¹ÀûÀ¸·Î ½ÇÇàµÇ´Â ÄÚµåÀÇ Á¶°¢À» ¸»ÇÑ´Ù. ¿¹¸¦ µé¾î ¿ì¸®°¡  
            ÀÛ¼ºÇÒ ÇÁ·Î±×·¥Àº óÀ½¿¡ 0°ú ¸ñ·ÏÀÇ Ã¹¹øÂ° °ªÀ» ºñ±³Çؼ­  
            °¡Àå Å«°ªÀ¸·Î ¸ñ·ÏÀÇ Ã¹¹øÂ° °ªÀ» ÃÖ°í°ªÀ¸·Î µî·Ï½ÃŰ°í  
            ±× ´ÙÀ½¿¡´Â ¸ñ·ÏÀÇ µÎ¹øÂ° °ª°ú ÇöÀç ÃÖ°í°ªÀ» ºñ±³ÇÏ´Â ½ÄÀ¸·Î  
            µ¿ÀÏÇÑ ÀÏÀ» °è¼Ó(¸ñ·ÏÀÇ ¸¶Áö¸· ¼ýÀÚÀÎ 0¿¡ µµ´ÞÇÒ ¶§±îÁö) ¹Ýº¹ÇÒ °ÍÀÌ´Ù.  
            ÀÌ·¯ÇÑ ¹Ýº¹ÀÛ¾÷ÀÇ Ã³¸®¸¦ À§Çؼ­ ·çÇÁ¸¦ »ç¿ëÇÏ°Ô µÈ´Ù.  
            ·çÇÁÀÇ ¹Ýº¹À» À§Çؼ­ ¿©±â¿¡¼­´Â unconditional jump¸¦ »ç¿ëÇϰí ÀÖ´Ù.  
             ·çÇÁ ÄÚµå ¿µ¿ªÀÇ ¸¶Áö¸·¿¡ µµ´ÞÇÏ¸é ¹«Á¶°Ç ·çÇÁ ÄÚµåÀÇ Ã³À½À¸·Î µ¹¾Æ°£´Ù.  
            ·çÇÁÄÚµåÀÇ Ã³À½¿¡¼­´Â ¸ñ·Ï¿¡¼­ ¼ýÀÚ¸¦ °¡Á®¿À°í 0ÀÎÁö ¾Æ´ÑÁö¸¦ ÆÇ´ÜÇÑ´ÙÀ½  
            0À̶ó¸é ·çÇÁ¸¦ ºüÁ®³ª°¡±â À§Çؼ­ jump¸¦ ½ÃµµÇÒ °ÍÀÌ´Ù. À̶§ÀÇ jump´Â Á¶°ÇÀÇ  
            ÆÇ´ÜÈÄ¿¡ ÀÌ·ç¾î Áö¹Ç·Î conditional jump°¡ ÇÊ¿äÇÏ°Ô µÈ´Ù. 
        </para> 
        <para> 
            ´ÙÀ½Àå¿¡¼­´Â Áö±Ý±îÁöÀÇ °èȹÀ» ½ÇÁ¦ ÇÁ·Î±×·¥ÀÇ ÀÛ¼º¿¡ Àû¿ëÇÒ °ÍÀÌ´Ù.  
            ÀÌ ÇÁ·Î±×·¥Àº °£´ÜÇÏÁö¸¸ ÇÁ·Î±×·¥À¸·Î½á °¡Á®¾ßÇÒ ´ëºÎºÐÀÇ ±âº»¿ä°ÇÀ»  
            °¡Áö°í ÀÖÀ¸¹Ç·Î Á¦´ë·Î ÀÌÇØÇÑ´Ù¸é ¾ÕÀ¸·Î ÀÌ ¹®¼­¸¦ Àдµ¥ Å« µµ¿òÀÌ  
            µÉ°ÍÀÌ´Ù.   
        </para> 
    </section> 
    <section> 
        <title>ÃÖ´ë ¼ýÀÚ Ã£±â</title> 
        <para> 
            ÄÚµåÀÇ À̸§Àº maximum.s·Î ÇÑ´Ù. 
            <screen> 
# data_items¿¡ ÀÖ´Â ¼ýÀÚÀÇ ¸ñ·ÏÁß °¡Àå Å« 
# µ¥ÀÌÅ͸¦ ¾ò¾î¿Í¼­ ¸®ÅÏÇÑ´Ù. 
# 
 
# º¯¼öµé : ÇÁ·Î±×·¥ÀÇ ÀÛµ¿À» À§Çؼ­ »ç¿ëµÇ´Â ·¹Áö½ºÅ͵é 
# %edi - µ¥ÀÌŸ ¸ñ·Ï¿¡¼­ Á¶»çÇÒ ¼ýÀÚÀÇ À妽º ÀúÀå¿ë 
# %ebx - °¡Àå Å« ¼ýÀÚ ÀúÀå¿ë 
# %eax - ÇöÀç ºñ±³ÇÒ ¼ýÀÚ ÀúÀå¿ë 
# 
 
# The following memory locations are used: 
# 
# data_items - ºñ±³ÇÒ ¼ýÀÚµ¥ÀÌÅ͵é 0Àº ¸¶Áö¸·À» ³ªÅ¸³½´Ù. 
# 
 
.section .data 
 
data_items:                         # ¼ýÀÚ µ¥ÀÌÅ͵é 
    .long 3,67,34,222,45,75,54,34,44,33,22,11,66,0  
    .section .text 
    .globl _start 
 
_start: 
    movl $0, %edi                   # move 0 into the index register 
    movl data_items(,%edi,4), %eax  # load the first byte of data 
    movl %eax, %ebx                 # since this is the first item, %eax is 
                                    # the biggest 
 
start_loop:                         # start loop 
    cmpl $0, %eax                   # check to see if we ve hit the end 
    je loop_exit 
    incl %edi                       # load next value 
    movl data_items(,%edi,4), %eax 
    cmpl %ebx, %eax                 # compare values 
    jle start_loop                  # jump to loop beginning if the new 
                                    # one isn t bigger 
    movl %eax, %ebx                 # move the value as the largest 
    jmp start_loop                  # jump to loop beginning 
loop_exit:                          # %ebx is the return value, 
                                    # and it already has the number 
 
    movl $1, %eax                   #1 is the exit() syscall 
    int $0x80 
            </screen> 
        </para> 
        <para> 
            ÀÌÁ¦ ¾î¼Àºí°ú ¸µÅ©¸¦ ÀÌ¿ëÇØ¼­ ½ÇÇàÆÄÀÏÀ» »ý¼ºÇÏÀÚ. 
            <screen> 
# as maximum.s -o maximum.o 
# ld maximum.o -o maximum 
            </screen> 
            ½ÇÇà ÈÄ °á°ú¸¦ È®ÀÎÇØº¸µµ·Ï ÇÏÀÚ.  
            <screen> 
# ./maximum 
# echo $? 
            </screen> 
            222°¡ Ãâ·ÂµÈ°ÍÀ¸·Î À§ÀÇ ÇÁ·Î±×·¥ÀÌ ÃÖ´ë ¼ýÀÚ¸¦ Á¦´ë·Î °ñ¶ó³½ °É  
            È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×·³ À§ÀÇ Äڵ带 ÇÑÁÙ¾¿ ºÐ¼®ÇØ º¸µµ·Ï ÇÏÀÚ.  
            µ¥ÀÌÅÍ ¼½¼Ç¿¡¼­ °¡Àå ¸ÕÀú ¸¸³ª´Â ÄÚµå´Â ¾Æ·¡¿Í °°´Ù.  
            <screen> 
data_items:                         # ¼ýÀÚ µ¥ÀÌÅ͵é 
    .long 3,67,34,222,45,75,54,34,44,33,22,11,66,0  
            </screen> 
            <emphasis>data_items</emphasis>´Â ¼ýÀÚ µ¥ÀÌÅ͵éÀÌ ÀúÀåµÈ À§Ä¡¿¡  
            ´ëÇÑ ÂüÁ¶¶óº§ÀÌ´Ù. ½ÇÁ¦ µ¥ÀÌÅͰ¡ Á¤ÀÇµÈ Äڵ忡¼­´Â .long ¸¦ ÀÌ¿ëÇØ¼­  
            ÀúÀåµÉ µ¥ÀÌÅÍÀÇ Çü(type)¸¦ ¸í½ÃÇϰí ÀÖ´Ù. ±×·¡¾ß Á¦´ë·ÎµÈ ¸Þ¸ð¸® ÇÒ´çÀÌ 
            ÀÌ·ç¾îÁú ¼ö Àֱ⠶§¹®ÀÌ´Ù. ÀÌÁ¦ºÎÅÍ data_items´Â µ¥ÀÌÅÍÀÇ Ã¹¹øÂ° ¿µ¿ªÀ»  
            °¡¸®Å²´Ù. data_items°¡ µ¥ÀÌÅÍÀÇ Ã¹¹øÂ° ¿µ¿ªÀ» °¡¸®Å°°í Àֱ⠶§¹®¿¡  
            ¿ì¸®´Â data_items¿¡ ´ëÇÑ °£´ÜÇÑ ¿¬»êÀ¸·Î ¼ýÀÚ µ¥ÀÌÅ͵éÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.  
            ¿¹¸¦ µé¾î¼­ movl data_items, %eax ¸í·ÉÀ» ³»¸®¸é 3ÀÌ %eax ·¹Áö½ºÅÍ¿¡  
            ÀúÀåµÈ´Ù. ¾î¼Àºí¸®¾î´Â .long ¿Ü¿¡µµ ´ÙÀ½°ú °°Àº ¿©·¯°¡Áö µ¥ÀÌÅÍÇüÀ»  
            Á¦°øÇÑ´Ù.  
            <variablelist> 
                <varlistentry> 
                <term>.byte</term> 
                <listitem> 
                    <para> 
                    1byteÀÇ µ¥ÀÌÅͰªÀ» ¸í½ÃÇÑ´Ù. 0-255¹üÀ§ÀÇ °ªÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.  
                    </para> 
                </listitem> 
                </varlistentry> 
 
                <varlistentry> 
                <term>.int</term> 
                <listitem> 
                    <para> 
                    2byteÀÇ µ¥ÀÌÅͰªÀ» ¸í½ÃÇÑ´Ù. 0-65535¹üÀ§ÀÇ °ªÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.     
                    </para> 
                </listitem> 
                </varlistentry> 
 
                <varlistentry> 
                <term>.long</term> 
                <listitem> 
                    <para> 
                    4byteÀÇ µ¥ÀÌÅͰªÀ» ¸í½ÃÇÑ´Ù. 0-4294967295¹üÀ§ÀÇ °ªÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.     
                    </para> 
                </listitem> 
                </varlistentry> 
 
                <varlistentry> 
                <term>.ascii</term> 
                <listitem> 
                    <para> 
                    ¸Þ¸ð¸®¿¡ ¹®ÀÚ¿­À» Á÷Á¢ ÀúÀåÇϱâ À§Çؼ­ »ç¿ëÇÑ´Ù. °¢°¢ÀÇ ¹®ÀÚ´Â  
                    1byteÀÇ °ø°£À» Â÷ÁöÇÑ´Ù. ¸¸¾à .ascii "Hello there\0" ·Î  
                    Á¤ÀÇ Çß´Ù¸é ¾î¼Àºí·¯´Â 12byteÀÇ °ø°£À» È®º¸Çϰí È®º¸µÈ °ø°£¿¡ À§ÀÇ  
                    ¹®ÀÚ¿­À» ÀúÀåÇÏ°Ô µÈ´Ù. ù¹øÂ° À§Ä¡¿¡´Â <emphasis>H</emphasis>°¡  
                    µÎ¹øÂ° À§Ä¡¿¡´Â <emphasis>e</emphasis>°¡ ÀúÀåµÈ´Ù. Á¦ÀÏ ¸¶Áö¸·¿¡´Â  
                    '\0'ÀÌ ÀúÀåµÇ´Âµ¥, ÀÌ °ªÀº È­¸é¿¡ Ãâ·ÂµÇÁö ¾Ê°í ´ÜÁö ¹®ÀÚ¿­ÀÇ  
                    ¸¶Áö¸· À̶ó´Â °ÍÀ» ¾Ë·ÁÁÖ±â À§Çؼ­ »ç¿ëÇÑ´Ù. À̿ܿ¡µµ Åǰú  
                    °³Ç๮ÀÚ¸¦ Ç¥½ÃÇϱâ À§Çؼ­ '\t'¿Í '\n'°°Àº ¹®Àڵ鵵 »ç¿ëµÈ´Ù.   
                    </para> 
                </listitem> 
                </varlistentry> 
            </variablelist> 
            À§ÀÇ ¿¹Á¦ÀÇ °æ¿ì ¾î¼Àºí·¯´Â ¼ýÀÚÀÇ ¸ñ·ÏÀ» ÀúÀåÇϱâ À§Çؼ­ 4byte * 14 ¸¸Å­ÀÇ 
            ¸Þ¸ð¸® °ø°£À» È®º¸°Ô µÈ´Ù.   
        </para> 
        <para> 
            ¼ýÀÚÀÇ ¸ñ·ÏÀ» ÀúÀåÇϴµ¥ À־ ¸¶Áö¸·¿¡ 0À» »ç¿ëÇß´Ù´Â °ÍÀ» ÁÖ¸ñÇ챉  
            ¹Ù¶õ´Ù. ÀÌ ÇÁ·Î±×·¥¿¡¼­´Â ¼ýÀÚ ¸ñ·ÏÀÇ ¸¶Áö¸·À̶ó´Â °ÍÀ» ¾Ë·ÁÁÖ±â  
            À§Çؼ­ 0À» »ç¿ëÇϰí ÀÖ´Ù. ¼ýÀÚ ¸ñ·ÏÀÇ °¹¼ö¸¦ ¸íÈ®È÷ Çϱâ À§Çؼ­  
            À̹ۿ¡µµ ¼ýÀÚ ¸ñ·ÏÀÇ Ã³À½¿¡ Àüü ¼ýÀÚÀÇ °¹¼ö¸¦ Àû¾îÁشٰųª ÇÁ·Î±×·¥³»¿¡  
            Àüü ¼ýÀÚÀÇ °¹¼ö¸¦ Á÷Á¢ ³Ö´Â ¹æ¹ýÀÌ ÀÖÀ» ¼ö ÀÖ´Ù. ÀÌ ¿Ü¿¡µµ ¿©·¯°¡Áö  
            ¹æ¹ýÀ» ÅëÇØ¼­ ¼ýÀÚÀÇ °¹¼ö¸¦ ¸í½ÃÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.  
            ÀÌ Ã³·³ ¸ñ·ÏÀÇ ³¡À» ³ªÅ¸³»±â À§Çؼ­ ¿©·¯°¡Áö ¹æ¹ýµéÀÌ µ¿¿øµÇ´Â ÀÌÀ¯´Â  
            ÄÄÇ»ÅÍÀÇ °æ¿ì ¿ì¸®°¡ ¸íÈ®ÇÏ°Ô ³¡À» ÁöÁ¤ÇØ ÁÖ±â Àü¿¡´Â  
            ¸ñ·ÏÀÇ ³¡ÀÌ ¾îµòÁö ÃøÁ¤ ÇÒ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù.  
        </para> 
        <para> 
            ÀÌÁ¦<emphasis>.globl</emphasis>¿¡ ´ëÇØ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ. À̰ÍÀº  
            ¾î¶°ÇÑ µ¥ÀÌÅ͵µ °¡ÁöÁö ¾ÊÀ¸¸ç ´ÜÁö ÇÁ·Î±×·¥ÀÌ ½ÃÀ۵Ǵ ½ÇÇà À§Ä¡¸¦  
            ¾Ë·ÁÁÖ±â À§ÇÑ ¸ñÀûÀ¸·Î »ç¿ëµÈ´Ù. Linux´Â ÇÁ·Î±×·¥À» ½ÃÀÛÇϱâ À§Çؼ­  
            ¾îµðºÎÅͰ¡ ½ÇÇ࿵¿ªÀÎÁö¸¦ ¾Ë°í ÀÖ¾î¾ß Çϸç _start ºÎÅÍ ½ÇÇàÇÑ´Ù.  
            .globlÀº _start¸¦ ÂüÁ¶½ÃŲ´Ù.  
            .globlÀ» »ý·«ÇÒ °æ¿ì ¸µÅ©½Ã ´ÙÀ½°ú °°Àº ¿¡·¯°¡ ¹ß»ýÇÒ °ÍÀÌ´Ù.  
            <screen> 
# ld maximum.o -o maximum 
ld: warning: cannot find entry symbol _start; defaulting to 08048074 
            </screen> 
        </para> 
        <para> 
            ÀÌ °É·Î ÇØ¼­ ¿ì¸®°¡ »ç¿ëÇÒ ¸ðµç µ¥ÀÌÅÍÀÇ Áغñ¸¦ ¸¶ÃÆÀ¸´Ï, ÀÌÁ¦ º»°ÝÀûÀ¸·Î  
            µ¥ÀÌÅ͸¦ ÀÌ¿ëÇØ¼­ ÇÊ¿äÇÑ ÀÛ¾÷(°¡Àå Å« ¼ýÀÚ¸¦ °¡·Á³»´Â)À» ÇØ¾ß ÇÑ´Ù.  
            À§ Äڵ带 º¸¸é <emphasis># º¯¼öµé</emphasis>¶ó°í µÇ¾î ÀÖ´Â ÁÖ¼®À»  
            º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌµé º¯¼ö´Â ÀÛ¾÷À» À§Çؼ­ »ç¿ëµÇ´Â µ¥ÀÌÅ͵éÀ»  
            ÀúÀåÇϱâ À§ÇÑ ¿ë±â·Î »ç¿ëÇÑ´Ù. ÀÌ ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº º¯¼öµéÀÌ  
            »ç¿ëµÈ´Ù.   
            <orderedlist> 
                <listitem> 
                <para> 
                    ÃÖ±ÙÀÇ ÃÖ´ë°ªÀ» ÀúÀåÇϱâ À§ÇÑ º¯¼ö  
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    ¼ýÀÚ ¸ñ·Ï¿¡¼­ °¡Á®¿Í¾ßÇÒ ¼ýÀÚÀÇ À§Ä¡¸¦ ÀúÀåÇϱâ À§ÇÑ º¯¼ö  
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    ¼ýÀÚ ¸ñ·Ï¿¡¼­ °¡Á®¿Â ¼ýÀÚ¸¦ ÀúÀåÇϱâ À§ÇÑ º¯¼ö 
                </para> 
                </listitem> 
            </orderedlist> 
            ¿ì¸®°¡ ¸¸µç ÇÁ·Î±×·¥Àº ¸Å¿ì °£´ÜÇϹǷΠ´ÜÁö ¸î°³ÀÇ º¯¼ö¸¸ ÇÏ¿ëÇÏ¸é µÇ¸ç,  
            ·¹Áö½ºÅ͸®¸¸À¸·Î ÀÌµé º¯¼ö¸¦ ´ã¾Æ³¾ ¼ö ÀÖ´Ù. ±×·¯³ª ÇÁ·Î±×·¥ÀÌ Ä¿Áö°í 
            °Å±â¿¡ µû¶ó¼­ ´Ù·ç¾î¾ßÇÏ´Â µ¥ÀÌÅ;çÀÌ Ä¿Áú °æ¿ì ·¹Áö½ºÅ͸¸À¸·Î ¸ðµç  
            ÀÛ¾÷À» ÇÒ ¼ö ¾ø°Ô µÈ´Ù. ¿©±â¿¡ ´ëÇØ¼­´Â ³ªÁß¿¡ ´Ù·ç°Ô µÉ°ÍÀÌ´Ù.   
        </para> 
        <para> 
            ÀÌ ÇÁ·Î±×·¥¿¡¼­ °¡Àå Å« ¼ýÀÚ¸¦ ÀúÀåÇϱâ À§Çؼ­ %ebx¸¦ »ç¿ëÇß´Ù. %edi´Â 
            ÇöÀç °¡Á®¿Í¾ßÇÒ ¼ýÀÚÀÇ À§Ä¡(index)¸¦ ÀúÀåÇϱâ À§Çؼ­ »ç¿ëÇÑ´Ù. %edi¸¦  
            ÀÌ¿ëÇØ¼­ ¿ì¸®´Â data_items·Î ºÎÅÍ ¸î ¹øÂ° ¼ýÀÚ¸¦ Àоî¿Í¾ß ÇÒÁö¸¦  
            °áÁ¤ÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ÇÁ·Î±×·¥ÀÌ ¸· ½ÃÀÛÇßÀ» ¶§´Â data_itemsÀÇ Ã¹¹øÂ°  
            ¼ýÀÚ¸¦ °¡Á®¿Í¾ß µÇ¹Ç·Î %edi´Â 0ÀÌ ÀԷµȴÙ. ù¹øÂ° ¼ýÀÚ¸¦ °¡Á®¿Ô´Ù¸é  
            %edi¿¡´Â 1ÀÌ µé¾î°¡°í, ´ÙÀ½ ¼ýÀÚ¸¦ °¡Á®¿Ã ¶§´Â data_itemsÀÇ µÎ¹øÂ°  
            ¼ýÀÚ¸¦ °¡Á®¿À°Ô µÈ´Ù.  
            <screen> 
movl  $0, $edi 
            </screen> 
            %edi´Â µ¥ÀÌÅÍ ¸ñ·ÏÀÇ ¸î¹øÂ° µ¥ÀÌÅ͸¦ °¡Á®¿Í¾ß ÇÏ´ÂÁö¸¸À» ¾Ë·ÁÁÖ´Â  
            À妽º ÀÌ´Ù. ¿ì¸®´Â ÀÌ À妽º °ªÀ» ÀÌ¿ëÇØ¼­ data_items·Î ºÎÅÍ °ªÀ»  
            °¡Á®¿Í¾ß Çϴµ¥ ´ÙÀ½°ú °°Àº °°´ÜÇÑ ¿¬»êÀÌ »ç¿ëµÈ´Ù.   
            <screen> 
movl data_items(,%edi,4), %eax 
            </screen> 
            ´ÙÀ½Àº ¸ñ·ÏÀ¸·Î ºÎÅÍ ¼ýÀÚ¸¦ °¡Á®¿À°í ÃÖ°í°ªÀ» ÀúÀåÇÏ´Â ·çƾÀÌ´Ù.  
            <orderedlist> 
                <listitem> 
                <para> 
                    <emphasis>data_items</emphasis>´Â ¿ì¸®°¡ °è»ê¿¡ »ç¿ëÇÒ ¼ýÀÚ ¸ñ·ÏÀÇ  
                    ù¹øÂ° ¼ýÀÚ¸¦ °¡¸£Å²´Ù. 
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    ¼ýÀÚ¸ñ·ÏÀÇ ¼ýÀÚµéÀº .long ÇüÀ̹ǷΠ4byteÀÇ Å©±â¸¦ Â÷ÁöÇÑ´Ù.          
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    °¢ ¼ýÀÚ°¡ Â÷ÁöÇÏ´Â °ø°£ÀÌ 4byteÀÎ °ÍÀ» ÀÌ¿ëÇØ¼­ ´ÙÀ½ ¼ýÀÚ¸¦  
                    °¡Á®¿Ã ¼ö ÀÖ´Ù.   
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    ¿ì¸®´Â Áö±Ý ¼ýÀÚ¿Í ´ÙÀ½ ¼ýÀÚ¸¦ ºñ±³Çؼ­ ÃÖ°í Å« ¼ýÀÚ¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù.  
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    °¡Àå Å« ¼ýÀÚ´Â ¿ì¸®°¡ ÁغñÇÑ ·¹Áö½ºÅÍ¿¡ º¹»çÇÑ´Ù.     
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    ´Ù½Ã óÀ½À¸·Î µÇµ¹¾Æ °£´Ù. 
                </para> 
                </listitem> 
            </orderedlist> 
            À§ÀÇ ·çƾÀ» º¸¸é óÀ½À¸·Î µÇµ¹¾Æ °£´Ù°í µÇ¾î ÀÖ´Ù. óÀ½À̶ó ÇÔÀº  
            ·çÇÁÀÇ Ã³À½ÀÎ <emphasis>start_loop</emphasis>ÀÌ µÈ´Ù. ·çÇÁÀÇ Ã³À½À¸·Î  
            µÇµ¹¾Æ °£´Ù. ·çÇÁÀÇ Ã³À½¿¡´Â ´ÙÀ½°ú °°Àº ¸í·ÉÀÌ µé¾î °£´Ù. 
            <screen> 
cmpl  $0, %eax  
je    end_loop 
            </screen> 
            <emphasis>cmpl</emphasis>Àº 2°³ÀÇ °ªÀ» ºñ±³Çϱâ À§ÇÑ ¸í·ÉÀÌ´Ù.  
            ¿©±â¿¡¼­ ¿ì¸®´Â 0°ú %eax¿¡ ÀúÀåµÈ °ªÀ» ºñ±³Çϰí ÀÖ´Ù. ºñ±³¸¦ Çß´Ù¸é  
            ºñ±³¿¡ ´ëÇÑ °á°ú°¡ ÀÖÀ» °ÍÀÌ´Ù. ÀÌ °á°ú´Â %eax·¹Áö½ºÅͰ¡ ¾Æ´Ñ  
            <emphasis>%eflags</emphasis>·¹Áö½ºÅÍ¿¡ µé¾î°£´Ù. ÀÌ ·¹Áö½ºÅÍ´Â  
            »óÅÂ(status) ·¹Áö½ºÅͶó°íµµ ºÒ¸®¿ì¸ç Á¾Á¾ »ç¿ëµÈ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº  
            ³ªÁß¿¡ ´Ù·çµµ·Ï ÇϰڴÙ. ¾î¶µç ºñ±³µÈ °á°ú´Â %eflags¿¡ ÀúÀåµÇ°í  
            ÀúÀåµÈ °ªÀº ´ÙÀ½ Äڵ忡¼­ Á¡ÇÁ¸¦ ÇÒÁö ¾ÈÇÒÁö¸¦ ÆÇ´ÜÇϱâ À§Çؼ­ »ç¿ëµÈ´Ù.  
            ¸¸¾à ºñ±³°á°ú°¡ ÂüÀ̶ó¸é(°°´Ù¸é) end_loop·Î Á¡ÇÁ¸¦ ÇÏ°Ô µÇ°í, ±×·¸Áö  
            ¾Ê´Ù¸é ±×³É ´ÙÀ½ ¶óÀÎÀ¸·Î ³Ñ¾î°¡°Ô µÈ´Ù. ¿ì¸®´Â Á¡ÇÁ¸¦ À§Çؼ­  
            <emphasis>je</emphasis>¸¦ »ç¿ëÇϰí Àִµ¥, À̿ܿ¡µµ ´Ù¾çÇÑ Á¡ÇÁ ¸í·ÉµéÀÌ  
            Á¸ÀçÇÑ´Ù.   
            <variablelist> 
                <varlistentry> 
                <term>je</term> 
                <listitem> 
                    <para> 
                        µÎ°³ÀÇ °ªÀÌ °°À¸¸é Á¡ÇÁÇ϶ó. 
                    </para> 
                </listitem> 
                </varlistentry> 
                <varlistentry> 
                <term>jg</term> 
                <listitem> 
                    <para> 
                        µÎ¹øÂ° °ªÀÌ Ã¹¹øÂ° °ªº¸´Ù Å©¸é Á¡ÇÁÇ϶ó. 
                    </para> 
                </listitem> 
                </varlistentry> 
                <varlistentry> 
                <term>jge</term> 
                <listitem> 
                    <para> 
                        µÎ¹øÂ° °ªÀÌ Ã¹¹øÂ° °ªº¸´Ù Å©°Å³ª °°À¸¸é Á¡ÇÁÇ϶ó. 
                    </para> 
                </listitem> 
                </varlistentry> 
                <varlistentry> 
                <term>jl</term> 
                <listitem> 
                    <para> 
                        µÎ¹øÂ° °ªÀÌ Ã¹¹øÂ° °ªº¸´Ù ÀÛÀ¸¸é Á¡ÇÁÇ϶ó. 
                    </para> 
                </listitem> 
                </varlistentry> 
                <varlistentry> 
                <term>jle</term> 
                <listitem> 
                    <para> 
                        µÎ¹øÂ° °ªÀÌ Ã¹¹øÂ° °ªº¸´Ù ÀÛ°Å´Ù °°´Ù¸é Á¡ÇÁÇ϶ó. 
                    </para> 
                </listitem> 
                </varlistentry> 
                <varlistentry> 
                <term>jmp</term> 
                <listitem> 
                    <para> 
                        ¹«Á¶°Ç Á¡ÇÁÇÑ´Ù. 
                    </para> 
                </listitem> 
                </varlistentry> 
            </variablelist> 
            À̵é Á¡ÇÁ¿Í °ü·ÃµÈ ¸í·ÉµéÀÇ ¸ñ·ÏÀº Appendix B¸¦ Âü°íÇϱ⠹ٶõ´Ù.  
            ¿ì¸®°¡ ¸¸µç ÇÁ·Î±×·¥¿¡¼­´Â 0°ú %eaxÀÇ °ªÀÌ °°À» °æ¿ì Á¡ÇÁÇϵµ·Ï  
            ÄÚµùµÇ¾î ÀÖ´Ù. %eax°¡ 0°ú °°´Ù¸é Áï ¸ñ·ÏÀÇ ¸¶Áö¸· À̶ó¸é loop_exit·Î 
            Á¡ÇÁÇÑ´Ù.   
        </para> 
        <para> 
            ¸¸¾à ¼ýÀÚ¸ñ·Ï¿¡¼­ °¡Á®¿Â ¼ýÀÚ°¡ 0ÀÌ ¾Æ´Ï¶ó¸é ´ÙÀ½ ¸í·ÉÀÌ ½ÇÇàµÈ´Ù.   
            <screen> 
incl  %edi  
movl  data_item(,%edi,4),   %eax 
            </screen> 
            ÀÌÀüÀÇ ³»¿ëµéÀ» ÁÖÀÇ ±í°Ô Àоî¿Ô´Ù¸é %edi°¡ data_itemsÀÇ ¸ñ·ÏÀÇ  
            À妽º¸¦ ÀúÀåÇϰí ÀÖ´Ù´Â °ÍÀ» ±â¾ïÇÒ °ÍÀÌ´Ù. ÀÌÁ¦ ´ÙÀ½ µ¥ÀÌÅÍ °ªÀ»  
            À妽º ÇØ¾ß ÇϹǷΠ%edi¸¦ 1¸¸Å­ Áõ°¡ ½ÃÄ×´Ù. ÀÌÂë µÇ¾ú´Ù¸é movl·Î ÇÏ´Â 
            ÀÏÀ» ÁüÀÛÇßÀ» °ÍÀÌ´Ù. data_item¿¡¼­ %edi À§Ä¡¸¸Å­ À̵¿Çؼ­ µ¥ÀÌÅ͸¦  
            °¡Á®¿À°í À̰ÍÀ» %eax¿¡ º¹»çÇÏ´Â ÀÏÀ» ÇÑ´Ù. data_item¿¡ ÀÖ´Â °¢ µ¥ÀÌÅÍÀÇ 
            Å©±â´Â 4¹ÙÀÌÆ® À̹ǷΠ4¹ÙÀÌÆ®¸¸Å­À» %eax¿¡ º¹»çÇϰí ÀÖ´Ù.   
        </para> 
        <para> 
            <screen> 
cmpl %ebx, %eax 
jle  start_loop 
            </screen> 
            ÀÌÁ¦ %ebx¿Í %eax¸¦ ºñ±³ÇÑ´Ù. %ebx´Â ÇöÀç±îÁö ã¾Æ³½ °¡ÀåÅ« ¼ýÀÚ°¡ µé¾î  
            ÀÖ´Ù. ¸¸¾à ÇöÀç °ªÀÌ ÀÌÀü ÃÖ°í°ªº¸´Ù À۰ųª °°´Ù¸é  
            <emphasis>start_loop</emphasis>·Î Á¡ÇÁÇÑ´Ù.    
            <screen> 
movl %eax, %ebx 
jmp  start_loop 
            </screen> 
            ¸¸¾à ÇöÀç °ªÀÌ ÀÌÀü ÃÖ°í°ªº¸´Ù Å©´Ù¸é %ebx¿¡ º¹»çÇ졒  
            <emphasis>start_loop</emphasis>·Î Á¡ÇÁÇÑ´Ù.   
            ÀÌÁ¦ 0À» ¸¸³¯¶§±îÁö À§ÀÇ ·çƾÀ» ¹Ýº¹ÇÑ´Ù. ¸¸¾à 0À» ¸¸³ª¸é  
            <emphasis>loop_exit</emphasis>·Î Á¡ÇÁÇÑ´Ù. ¸¶Áö¸· ºÎºÐ¿¡¼­  
            ÀÌ ÇÁ·Î±×·¥Àº ¸®´ª½º Ä¿³ÎÀÇ exit¸¦ È£ÃâÇÏ°Ô µÈ´Ù. ½Ã½ºÅÛÄÝÀÇ È£ÃâÀº  
            %eax¿¡ ÀúÀåµÇ¾î ÀÖ´Â ¹øÈ£¸¦ ÅëÇØ¼­ È£ÃâµÈ´Ù. exit½Ã½ºÅÛÄÝÀÇ ¹øÈ£´Â  
            1¹øÀ̹ǷΠ´ÙÀ½°ú °°Àº Äڵ尡 ÇÊ¿äÇÏ´Ù.  
            <screen> 
movl $1, %eax 
int  0x80  
            </screen> 
        </para> 
        <para> 
            À̰ÍÀ¸·Î ¿ì¸®°¡ ÀÛ¼ºÇÑ ÇÁ·Î±×·¥¿¡ ´ëÇÑ ¸ðµç ¼³¸íÀ» ¸¶ÃÆ´Ù. ¸Å¿ì  
            °£´ÜÇÑ ÇÁ·Î±×·¥ÀÌ¿´Áö¸¸ »ó´çÈ÷ ¸¹Àº °ÍÀ» ¹è¿ï¼ö ÀÖ¾ú´Ù. °£´ÜÇÑ  
            ÇÁ·Î±×·¥ À̹ǷΠÀÌÇØ¿¡´Â Å« ¾î·Á¿òÀÌ ¾ø¾úÀ» °ÍÀÌ´Ù. ÀÌÇØ°¡ µÇÁö  
            ¾Ê´Â ºÎºÐÀÌ ÀÖ´Ù¸é ÁÖ¼®°ú ÇÔ²² ÇÁ·Î±×·¥À» ÁÖÀÇ ±í°Ô ÀÐ¾î º¸±â  
            ¹Ù¶õ´Ù. Á»´õ ¿Ïº®ÇÏ°Ô ÀÌÇØÇÏ°í ½Í´Ù¸é ÇÁ·Î±×·¥ÀÇ °¢ ½ºÅܺ°·Î  
            ·¹Áö½ºÅÍÀÇ °ªÀÇ º¯È­¸¦ ±â·ÏÇØ°¡¸é¼­ Äڵ带 È®ÀÎÇØ º¸±â  
            ¹Ù¶õ´Ù.  
        </para> 
    </section> 
    <section> 
        <title>Addressing mode</title>  
        <para> 
            ¿ì¸®´Â 2Àå¿¡¼­ ¾î¼Àºí¸®¾î°¡ 2°¡Áö Á¾·ùÀÇ µ¥ÀÌÅÍ Á¢±Ù ¹æ¹ý 
            (Data Accessing Methods)¸¦ °¡Áø´Ù´Â °ÍÀ» ¹è¿ü´Ù. À̹ø Àå¿¡¼­´Â  
            ÀÌ·¯ÇÑ ¾î¼Àºí¸®¾î¿¡¼­ Á¦°øÇÏ´Â ¾îµå·¹½º ±â¹ÝÀÇ µ¥ÀÌÅÍ Á¢±Ù ¹æ¹ý¿¡  
            ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.    
        </para> 
        <para> 
            ¸Þ¸ð¸® ÁÖ¼Ò¸¦ ÂüÁ¶ÇÏ´Â ÀϹÝÀûÀÎ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.     
            <screen> 
ADDRESS_OR_OFFSET(%BASE_OR_OFFSET, %INDEX, MULTIPLIER) 
            </screen> 
            À§ÀÇ ¸ðµç ÇʵåµéÀº Çʼö»çÇ×ÀÌ ¾Æ´Ñ ¿É¼Ç»çÇ×µéÀÌ´Ù. ´ÙÀ½Àº  
            À§ÀÇ ÇʵåµéÀÇ °ªÀ» ÀÌ¿ëÇØ¼­ ÁÖ¼Ò¸¦ °è»êÇØ³»´Â ¹æ¹ýÀÌ´Ù.   
            <screen> 
FINAL ADDRESS = ADDRESS_OR_OFFSET + %BASE_OR_OFFSET + MULTIPLIER * %INDEX 
            </screen> 
            <emphasis>ADDRESS_OR_OFFSET</emphasis>¿Í <emphasis>MULTIPLIER</emphasis> 
            ¸ðµÎ »ó¼ö·Î ·¹Áö½ºÅÍ´Ù. ¸¸¾à ¾î¶² °ªµµ ¾ø´Ù¸é, 0ÀÌ »ç¿ëµÈ´Ù. 
        </para> 
        <para> 
            Addressing mode´Â 2ÀåÀÇ Data Accessing Method¿¡¼­ ÀÌ¹Ì ¾ð±ÞÇÑÀûÀÌ  
            ÀÖÁö¸¸ º¹½ÀÂ÷¿ø¿¡¼­ °£´ÜÈ÷ ¼³¸íÇϵµ·Ï ÇϰڴÙ. 
            <variablelist> 
                <varlistentry> 
                <term>direct addressing mode</term> 
                <listitem> 
                    <para> 
                    À̰ÍÀº ´ÜÁö ADDRESS_OR_OFFSET ¸¸ »ç¿ëÇÑ´Ù. ´ÙÀ½Àº »ç¿ë¿¹ÀÌ´Ù. 
                    <screen> 
movl ADDRESS, %eax 
                    </screen> 
                    %eax¿¡´Â ¸Þ¸ð¸® ÁÖ¼Ò ADDRESSÀÇ °ªÀÌ Á÷Á¢ º¹»çµÈ´Ù. 
                    </para> 
                </listitem> 
                </varlistentry> 
                <varlistentry> 
                <term>index addressing mode</term>     
                <listitem> 
                    <para> 
                    ADDRESS_OR_OFFSET°ú %INDEX°¡ ¸ðµÎ »ç¿ëµÈ´Ù. À妽º ·¹Áö½ºÅÍ¿¡´Â 
                    ¾î¶² Á¾·ùÀÇ ÀϹݸñÀû(general-purpose) ·¹Áö½ºÅÍ¶óµµ »ç¿ëÇÒ  
                    ¼ö ÀÖ´Ù. À妽º ·¹Áö½ºÅÍ¿¡´Â 1, 2, 4ÀÇ ¹è¼ö°¡ ¿Ã ¼ö Àִµ¥,  
                    ÀÌ·¸°Ô µÇ¹Ç·Î½á byte, double-byte, wordsÀÇ ¾î¶°ÇÑ À妽º¶óµµ  
                    ½±°Ô °è»êÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î¼­ ¹®ÀÚ¿­ÀÌ µé¾î ÀÖ´Â  
                    string_start º¯¼ö°¡ Àִµ¥ ¿©±â¿¡¼­ 3¹øÂ° ¹®ÀÚ¸¦ °¡Á®¿À°í  
                    ½Í´Ù¸é ´ÙÀ½°ú °°ÀÌ Äڵ带 ¸¸µé¸é µÈ´Ù. 
                    <screen> 
movl string_start(,%ecx,1), %eax 
                    </screen> 
                    ¹°·Ð À̰æ¿ì %ecx¿¡´Â À妽º°ªÀÎ 3ÀÌ µé¾îÀÖ¾î¾ß ÇÒ°ÍÀÌ´Ù.  
                    ADDRESS_OR_OFFSET Çʵ尡 ºñ¾î ÀÖÀ¸¹Ç·Î ¿©±â¿¡´Â 0ÀÌ µé¾î°£´Ù.  
                    Áï string_startÀÇ Ã³À½ÁÖ¼Ò¸¦ °¡¸®Å²´Ù. À妽ºÀÎ %ecx°¡ 3À̹ǷΠ  
                    string_startÀÇ 3¹øÂ° ÁÖ¼Ò¸¦ °¡¸®Å°°í, MULTIPLIER°¡ 1À̹ǷΠ 
                    1byte¸¸Å­ %eax·Î º¹»çµÈ´Ù. 
                    </para> 
                </listitem> 
                </varlistentry> 
                <varlistentry> 
                    <term>(°£Á¢)indirect addressing mode</term> 
                    <listitem> 
                        <para> 
                        ·¹Áö½ºÅÍÀÇ ÁÖ¼Ò·Î ºÎÅÍ °ªÀ» Á÷Á¢ ÀоîµéÀδÙ. ¿¹¸¦µé¾î  
                        %eaxÀÇ °ªÀ» %ebx·Î º¹»çÇÏ°í ½Í´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.  
                        <screen> 
movl (%eax), %ebx 
                        </screen> 
                        </para> 
                    </listitem> 
                </varlistentry> 
                <varlistentry> 
                    <term>base-pointer addressing mode</term> 
                    <listitem> 
                        <para> 
                            ·¹Áö½ºÅÍÁÖ¼Ò °ª¿¡ »ó¼ö°ªÀ» ´õÇÑ´Ù´Â °ÍÀ» Á¦¿ÜÇϰí´Â  
                            °£Á¢ÁÖ¼Ò ÁöÁ¤¹æ½Ä°ú ¸Å¿ì ºñ½ÁÇÑ ¹æ½ÄÀÌ´Ù. ¿¹¸¦ µé¾î ´ç½ÅÀÌ  
                            ¾î¶² ·¹ÄÚµå·Î ºÎÅÍ 4¹ÙÀÌÆ®ÀÇ   
                        </para> 
                    </listitem> 
                </varlistentry> 
                <varlistentry> 
                    <term>immediate mode</term> 
                    <listitem>     
                        <para> 
                        Immediate mode´Â ¸Å¿ì °£´ÙÇÏ´Ù. ¿øÇÏ´Â °ªÀ» ·¹Áö½ºÅͳª ¸Þ¸ð¸® ¿µ¿ªÀ¸·Î  
                        Á÷Á¢ ÀúÀåÇÏ´Â ¹æ½ÄÀÌ´Ù. ¿¹¸¦ µé¾î %eax¿¡ 12¶ó´Â °ªÀ» ÀúÀåÇϱ⠿øÇÑ´Ù¸é  
                        ´ÙÀ½°ú °°ÀÌ Immediate mode¸¦ ÀÌ¿ëÇØ¼­ °£´ÜÇÏ°Ô Ã³¸®ÇÒ ¼ö ÀÖ´Ù.   
                        <screen> 
movl $12,  %eax 
                        </screen> 
                        Immediate mode¸¦ ÀÌ¿ëÇÒ ¶§ ¼ýÀÚ ¾Õ¿¡ ´Þ·¯($)Ç¥½Ã°¡ »ç¿ëµÇ°í ÀÖÀ½À»  
                        ÁÖ¸ñÇϵµ·Ï ÇÏÀÚ. ¸¸¾à ´Þ·¯Ç¥½Ã¸¦ »ý·«ÇÏ°Ô µÉ°æ¿ì direct addressing mode·Î  
                        ¿¬»êÀ» ½ÃµµÇÏ°Ô µÈ´Ù. ÀÌ·¸°Ô µÇ¸é 12°¡ %eax¿¡ ÀúÀåµÇ´Â°Ô ¾Æ´Ï°í 12ÀÇ  
                        ¸Þ¸ð¸® À§Ä¡¿¡ ÀÖ´Â °ªÀÌ ÀúÀåµÇ¾î¼­ ÀüÇô ¾û¶×ÇÑ °á°ú¸¦ °¡Á®¿À°Ô µÈ´Ù.  
                        </para> 
                    </listitem>     
                </varlistentry> 
                <varlistentry> 
                    <term>register addressing mode</term> 
                    <listitem> 
                        <para> 
                        °£´ÜÇÏ°Ô ÇϳªÀÇ ·¹Áö½ºÅ͸¦ ´Ù¸¥ ·¹Áö½ºÅÍ·Î º¹»çÇϱâ À§Çؼ­  
                        »ç¿ëÇÑ´Ù.  
                        </para> 
                    </listitem> 
                </varlistentry> 
            </variablelist> 
            ¸Þ¸ð¸®ÀÇ µ¥ÀÌÅ͸¦ Á¦¾îÇϴµ¥ À־ À§ÀÇ ¸ðµåµé Áß Çϳª°¡ »ç¿ëµÇ¹Ç·Î  
            ¾îµå·¹½Ì ¸ðµå¿¡ ´ëÇØ¼­ ÀÌÇØÇÏ´Â °ÍÀº ¸Å¿ì Áß¿äÇÏ´Ù. Immediate mode¸¦ Á¦¿ÜÇÑ  
            ¸ðµç ¸ðµåµéÀº ¼Ò½º(source)³ª ¸ñÀûÁö ¿ÀÆÛ·£µå¸¦ ¸ðµÎ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. ¹Ý¸é Immediate  
            mode´Â ´ÜÁö ¼Ò½º ¿ÀÆÛ·£µå¸¸ ÀÌ¿ëÇÑ´Ù.  
        </para> 
        <para> 
            °¢°¢ÀÇ ¸ðµåµéÀ» ÀÌ¿ëÇØ¼­ ¸Þ¸ð¸® º¹»ç¿Í °°Àº ÀÏÀ» ÇÏ´Ù º¸¸é..  
            ´Ù¾çÇÑ Å©±âÀÇ µ¥ÀÌÅ͸¦ º¹»çÇØ¾ß ÇÏ´Â °æ¿ì°¡ »ý±æ °ÍÀÌ´Ù.  
            ¾î¼Àºí¸®´Â ÀÌ·¯ÇÑ °æ¿ì¸¦ ´ëºñÇÏ¿©¼­ ÀÚÁÖ »ç¿ëÇÏ´Â µ¥ÀÌÅÍ Å©±â¿¡ ´ëÇØ¼­ 
            »ç¿ë°¡´ÉÇÑ ¸í·ÉµéÀ» ÁغñÇϰí ÀÕ´Ù. ¿öµå ´ÜÀ§ÀÇ µ¥ÀÌÅÍ º¹»ç¸¦  
            ¿øÇÑ´Ù¸é <emphasis>movl</emphasis>¸¦ »ç¿ëÇϰí, ¹ÙÀÌÆ® ´ÜÀ§·ÎÀÇ  
            º¹»ç¸¦ ¿øÇÏ´Ù¸é <emphasis>movb</emphasis>¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª  
            ¾Õ¿¡¼­ ´Ù·ç¾ú´Ù ½ÃÇÇ µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§ÇÑ ÃÖ¼Ò´ÜÀ§·Î ·¹Áö½ºÅ͸¦  
            »ç¿ëÇϴµ¥ Å©±â°¡ ¿öµå´ÜÀ§ÀÌ´Ù. ±×·¯¹Ç·Î ¹ÙÀÌÆ®´ÜÀ§·Î ´Ù·ç°íÀÚ  
            ÇÒ°æ¿ì ·¹Áö½ºÅÍÀÇ ÀÏÁ¤¿µ¿ª¸¸À» »ç¿ëÇÒ ¼ö ÀְԵȴÙ(¾î¶»°Ô º¸¸é ³ª¸ÓÁö  
            °ø°£À» ³¶ºñÇÏ´Â °á°ú¸¦ °¡Á®¿Â´Ù°í º¼ ¼ö ÀÖ´Ù).   
        </para> 
        <para> 
            %eax¸¦ ¿¹·Î µé¾îº¸µµ·Ï ÇÏÀÚ. ¸¸¾à 2¹ÙÀÌÆ®ÀÇ Å©±â¸¦ º¹»çÇϰíÀÚ ÇÒ¶§  
            %ax¸¦ »ç¿ëÇÑ´Ù. %ax´Â least-significant halt °£´ÜÈ÷ ¸»Çؼ­ 
            4¹ÙÀÌÆ® Å©±âÀÇ ¿öµå(Áï %eaxÀ¸)¿¡¼­ÀÇ ÇÏÀ§ 2¹ÙÀÌÆ®ÀÇ ¿µ¿ªÀ» °¡¸®Å²´Ù. 
            %ax´Â ´Ù½Ã 1¹ÙÀÌÆ®¾¿ 2°³·Î ³ª´· ¼ö ÀÖ´Ù. %al°ú %ah°¡ ±×°ÍÀ¸·Î  
            %alÀº %axÀÇ ¸¶Áö¸· ¹ÙÀÌÆ® %ah´Â %axÀÇ Ã³À½ ¹ÙÀÌÆ®¸¦ °¡¸®Å²´Ù.         
            <figure>     
                <title>%eax ·¹Áö½ºÅÍÀÇ ¸ð½À</title> 
                <graphic fileref="http://www.joinc.co.kr/albums/album01/ahn.gif"> 
            </figure> 
        </para> 
    </section> 
</section> 
 
<section id="AssemblyLanguageProgram"> 
    <title>ÇÔ¼ö¿¡ ´ëÇØ¼­ ´Ù·ç±â</title> 
    <section>     
        <title>º¹ÀâÇÑ ÇÁ·Î±×·¥ ´Ù·ç±â</title> 
        <para>     
            <xref linkend="struct">¿¡¼­ ´Ù·ç¾ú´ø ÇÁ·Î±×·¥Àº ¾î¼Àºí¸®ÀÇ ±âº»ÀûÀÎ  
            ¼³¸íÀ» À§ÇÑ ¸Å¿ì ´Ü¼øÇÑ ÄÚµåµé·Î ÀÌ·ç¾îÁ® ÀÖÀ¸¸ç ´ÜÁö ÇϳªÀÇ ¼½¼Ç¸¸À»  
            °¡Áö°í ÀÖ´Ù. ÇÁ·Î±×·¥ÀÌ ´Ü¼øÇÏ´Ù¸é °ü°è ¾øÁö¸¸. ¸¸¾à Á» ±Ô¸ðÀÖ´Â  
            ÇÁ·Î±×·¥À» ¸¸µé¾î¾ß ÇÑ´Ù¸é ¼öõ, ¼ö¸¸¶óÀÎÀ» ÀÛ¼ºÇØ¾ß µÉÁöµµ ¸ð¸¥´Ù.  
            ÀÌ·± ÇÁ·Î±×·¥À» ÇϳªÀÇ ¼½¼ÇÀ¸·Î À¯ÁöÇϸé À¯Áöº¸¼ö°¡ ¸Å¿ì Èûµé °ÍÀÌ´Ù.  
            ƯÈ÷ ¿©·¯¸íÀÇ ÇÁ·Î±×·¥ÀÌ ÇϳªÀÇ ÇÁ·ÎÁ§Æ®¿¡ Âü°¡ÇÒ °æ¿ì ÇÁ·Î±×·¥ÀÇ  
            À¯Áö º¸µÎ´Â ´õ¿í Èûµé°Ô µÉ°ÍÀÌ´Ù.        
        </para>     
        <para>     
            ÀÌ·¸°Ô ÇÁ·Î±×·¥ÀÇ Å©±â°¡ Ä¿Áö°Å³ª µÎ¸íÀÌ»óÀÇ ÇÁ·Î±×·¡¸Ó°¡ Âü°¡ÇÒ ¶§´Â  
            Äڵ带 ÇÏ´ÂÀÏ¿¡ µû¶ó¼­ ¸î°³ÀÇ Á¶°¢À¸·Î ³ª´©¾î¼­ °ü¸®ÇÏ¸é µÉ°ÍÀÌ´Ù.  
            ¹°·Ð À̰æ¿ì ³ªÁß¿¡ Á¶°¢À» Çϳª·Î ÇÕÄ¡±â ÆíÇϵµ·Ï Àß Á¤ÀÇµÈ  
            ÀÎÅÍÆäÀ̽º¸¦ ¸¸µé°í ¿©±â¿¡ µû¶ó¼­ ÀÚ½ÅÀÌ ¸ÃÀº Äڵ带 ÀÛ¼ºÇϵµ·Ï  
            ÇØ¾ß ÇÑ´Ù. ÀÌ·¸°Ô ÇÏ¸é °¢ ÇÁ·Î±×·¡¸Ó´Â ÀÚ½ÅÀÌ ¸ÃÀº ¿µ¿ª¸¸À»  
            µ¶¸³ÀûÀ¸·Î Å×½ºÆ® ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÇÁ·Î±×·¡¹ÖÀÇ ÁýÁßµµ¸¦ ³ôÀÏ ¼ö  
            ÀÖ°Ô µÇ°í, ´Ù¸¥ ÇÁ·Î±×·¡¸Ó¿Í Á»´õ È¿À²ÀûÀ¸·Î Çù¾÷ÇÒ ¼ö ÀÖ°Ô µÈ´Ù.  
        </para>     
        <para>     
            ÀÌ·¯ÇÑ µ¶¸³ÀûÀÎ °³¹ßÀ» À§Çؼ­ ÇÁ·Î±×·¡¸Ó´Â <emphasis>ÇÔ¼ö</emphasis>¶ó°í  
            ºÒ¸®¿ì´Â ¿©·¯°³ÀÇ ÄÚµåÁ¶°¢À» ¸¸µé°Ô µÈ´Ù. ¿öµå ÇÁ·Î¼¼¼­¸¦ ¸¸µç´Ù°í  
            °¡Á¤Çغ¸ÀÚ. ±×·³ "°¡" °³¹ßÀÚ´Â »ç¿ëÀÚÀÇ Å°ÀÔ·ÂÀ» ó¸®ÇÏ´Â  
            handle_type_chracter ÇÔ¼ö¸¦ ¸¸µéµµ·Ï ÇÑ´Ù. ÀÌ ÇÔ¼ö´Â À¯ÀúÀÇ Å°ÀÔ·ÂÀ»  
            ÀÐ¾î µé¿©¼­ ±× °ªÀ» È­¸é¿¡ Ãâ·ÂÇÏ´Â ÀÏÀ» ÇÑ´Ù. "³ª"¶ó´Â °³¹ßÀÚ´Â  
            check_chracter_spell À̶ó´Â ¿ÀŸ°Ë»ç ÇÔ¼ö¸¦ ¸¸µéµµ·Ï ÇÑ´Ù.  
            ÀÌ ÇÔ¼ö´Â handle_type_chracter¿¡ ÀÇÇØ¼­ ÀÔ·ÂµÈ ¹®ÀÚ¸¦ °Ë»çÇØ¼­  
            ¿ÀŸ°¡ ¹ß»ýÇÏ´ÂÁö¸¦ È®ÀÎÇÏ´Â ÀÏÀ» ÇÑ´Ù. ÇÔ¼ö´Â ÀÌ·¸°Ô  
            ÁÖ¾îÁö´Â µ¥ÀÌÅÍ¿Í ÀÌÀÇ Ã³¸®ÇÏ´Â ·çƾ´ÜÀ§·Î ¸¸µé¾î Áö°Ô µÈ´Ù.   
        </para>     
        <para> 
            Á» ±Ô¸ðÀÖ´Â ÇÁ·Î±×·¥µéÀº ¼ö¹é¿¡¼­ ¼öõÀÇ ÀÌ·¯ÇÑ Á¶±×¸¶ÇÑ ÇÔ¼öµé·Î  
            ÀÌ·ç¾îÁö°Ô µÈ´Ù. ÀÌ·¯ÇÑ ÇÔ¼öµé Áß¿¡´Â °³¹ßÀÚ°¡ Çʿ信 ÀÇÇØ¼­ ±×¶§ ±×¶§      
            ¸¸µé¾î Áö´Â °Íµéµµ ÀÖÁö¸¸ ½Ã½ºÅÛ¿¡ ÀÇÇØ¼­ Á¦°øµÇ´Â ÇÔ¼öµéµµ ÀÖ´Ù.  
            ´ç¿¬ÇÏÁö¸¸ ÀÌ¹Ì ¸¸µé¾îÁø ÇÔ¼ö´Â »ç¿ëÀÚ°¡ ´Ù½Ã ¸¸µé¾î¼­ »ç¿ëÇÒ ¼ö ¾ø´Ù. 
            ÀÌ·± ½Ã½ºÅÛ¿¡¼­ Á¦°øÇÏ´Â ÇÔ¼öµéÀ» ¿ø½Ã(primitive)ÇÔ¼ö¶ó°í ºÎ¸¥´Ù.  
            ¿¹¸¦ µé¾î ±×·¡ÇÈ À¯Àú ÀÎÅÍÆäÀ̽º¸¦ Áö¿øÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù°í  
            °¡Á¤ÇØ º¸ÀÚ. ¿©±â¿¡´Â ¸Þ´º¸¦ »ý¼ºÇϱâ À§ÇÑ ÇÔ¼ö°¡ ÀÖÀ» °ÍÀÌ´Ù.  
            ÀÌ ÇÔ¼öµéÀº ±ÛÀÚ¸¦ ¾²°Å³ª, ¾ÆÀÌÄÜÀ» ¹èÄ¡Çϰųª, ¹è°æÀÇ »öÀ» ¼³Á¤Çϰųª  
            ¸¶¿ì½ºÀÇ À§Ä¡¸¦ °è»êÇÏ´Â ÇÔ¼öµéÀÌ ÀÖÀ» °ÍÀÌ´Ù. ±×¶ó³ª ÀÌ·¯ÇÑ ÇÔ¼öµé  
            ¿Ü¿¡µµ ±âº»ÀûÀ¸·Î ¼±À» ¸¸µé°Å³ª, Á¡À» Âï°Å³ª ÇÏ´Â µîÀÇ °¡Àå ±âº»ÀûÀÎ  
            ÇÔ¼öµéÀÌ ÀÖÀ» °ÍÀ̰í À̰͵éÀº ¿î¿µÃ¼Á¦ ¼öÁØ¿¡¼­ Áö¿øÇÏ°Ô µÉ°ÍÀÌ´Ù.  
            ÀÌ·¯ÇÑ ÇÔ¼ö¸¦ primitiveÇÔ¼ö¶ó°í º¸¸é µÈ´Ù. ÃÖÁ¾ÀûÀ¸·Î ¿©·¯ºÐÀÌ  
            Å« ±Ô¸ðÀÇ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù¸é ÀÌ·¯ÇÑ primitiveÇÔ¼öµéÀ» °¡Áø ÀÛÀº  
            (»ç¿ëÀÚ °¡ ¸¸µç)ÇÔ¼öµéÀÇ ¸ðÀÓÀ¸·Î ÀÌ·ç¾î Áú °ÍÀÌ´Ù. ÀÌ»ó ÀÏ¹Ý  
            GUI ¾ÖÇø®ÄÉÀ̼ÇÀ» ¿¹·Î µé¾î¼­ ¼³¸íÇߴµ¥, GUI ¿¡¼­ÀÇ primitive´Â  
            ¾î¼Àºí¸®¿¡¼­´Â ½Ã½ºÅÛÄÝÀÌ´Ù. ¿©±â¿¡¼­´Â ½Ã½ºÅÛÄÝ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ  
            ³»¿ëÀ» ´Ù·çÁø ¾ÊÀ» °ÍÀÌ´Ù. ½Ã½ºÅÛ ÄÝ¿¡ ´ëÇÑ ³»¿ëÀº         
            <ulink url="http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_linux_systemcall_quick_reference">¸®´ª½º ½Ã½ºÅÛ ÄÝ Äü ·¹ÆÛ·±½º</ulink>¿Í 
            <ulink url="http://www.joinc.co.kr/modules/moniwiki/wiki.php/article_Linux_Assembler_ÇÏ¿ìÅõ">¸®´ª½º ¾î¼Àºí¸® ÇÏ¿ìÅõ</ulink>¸¦ Âü°íÇØ º¸±â ¹Ù¶õ´Ù. 
        </para> 
    </section> 
    <section> 
        <title>ÇÔ¼ö ¸¸µé±â</title> 
        <para> 
            ÇÔ¼ö´Â ´ÙÀ½°ú °°Àº ¿ä¼Òµé¿¡ ÀÇÇØ¼­ ¸¸µé¾îÁø´Ù. 
            <variablelist> 
                <varlistentry> 
                <term>ÇÔ¼ö À̸§</term> 
                <listitem> 
                    <para> 
                        ¾î¼Àºí¸®¾î¿¡¼­ ÇÔ¼öÀÇ À̸§Àº ÇÔ¼öÀÇ Äڵ尡 ½ÃÀÛÇÏ´Â  
                        ÁÖ¼Ò¸¦ °¡¸®Å°´Â    ½Éº¼(symbol)·Î ¼±¾ðµÇ¸ç, ½Éº¼Àº ÇÔ¼öÀÇ À̸§  
                        ´ÙÀ½¿¡ ÄÝ·Ð(":")À» ºÙÀÌ´Â °É·Î ¼±¾ðµÈ´Ù. ÀÌ µÚ¿¡ ÀÖ´Â ÄÚµå´Â 
                        ¸ðµÎ ÇÔ¼öÀÇ Äڵ尡 µÈ´Ù. Á¡ÇÁ¸¦ À§Çؼ­ »ç¿ëµÇ´Â ¶óº§°ú  
                        ¸Å¿ì ºñ½ÁÇÏ°Ô »ç¿ëµÈ´Ù.     
                    </para> 
                </listitem> 
                </varlistentry> 
 
                <varlistentry> 
                <term>ÇÔ¼ö ÀÎÀÚ</term> 
                <listitem> 
                    <para> 
                        ÇÔ¼ö ÀÎÀÚ(parameter)Àº ÇÔ¼ö°¡ ó¸®ÇØ¾ß ÇÏ´Â µ¥ÀÌÅÍ ¾ÆÀÌÅÛÀÌ´Ù.      
                        ¿¹¸¦ µé¾î »çÄ¢¿¬»êÀ» ¼öÇàÇÏ´Â ÇÔ¼ö°¡ ÀÖ´Ù°í °¡Á¤ÇØ º¸ÀÚ. 
                        »çÄ¢¿¬»êÀ» À§Çؼ­´Â 2°³ÀÇ ÇÇ¿¬»êÀÚ°¡ ÇÊ¿äÇÏ´Ù. ±×·¯¹Ç·Î  
                        ÇÔ¼ö¿¡ 2°³ÀÇ (¼ýÀÚ)µ¥ÀÌÅ͸¦ ³Ñ°ÜÁÙ ¼ö ÀÖ¾î¾ß ÇÑ´Ù.  
                        ÀÌ ÇÔ¼ö´Â 2°³ÀÇ µ¥ÀÌÅ͸¦ ³Ñ°Ü ¹Þ±â À§Çؼ­ 2°³ÀÇ ÀÎÀÚ¸¦  
                        ÇÊ¿ä·Î ÇÏ°Ô µÈ´Ù.   
                    </para> 
                </listitem> 
                </varlistentry> 
 
                <varlistentry> 
                <term>Áö¿ª º¯¼ö</term> 
                <listitem> 
                    <para> 
                    Áö¿ªº¯¼ö´Â ÇÔ¼ö¿¡¼Å ¿¬»êÀ» À§ÇØ »ç¿ëµÇ´Â µ¥ÀÌÅ͸¦ ÀúÀåÇ챉  
                    À§Çؼ­ ÇÔ¼ö¾È¿¡¼­¸¸ »ç¿ëµÇ´Â º¯¼ö´Ù.    
                    </para> 
                </listitem> 
                </varlistentry> 
 
                <varlistentry> 
                <term>Àü¿ª º¯¼ö</term> 
                <listitem> 
                    <para> 
                    Àü¿ªº¯¼ö´Â ÇÔ¼ö¿ÜºÎ¿¡¼­ °ü¸®µÇ¾î Áö´Â µ¥ÀÌÅÍ ÀúÀ念¿ªÀÌ´Ù. 
                    ¿¹¸¦ µé¾î °£´ÜÇÑ ÅØ½ºÆ® ÆíÁý±â¸¦ ¸¸µé°æ¿ì ÆíÁý±â¿¡¼­ ºÒ·¯µéÀÎ  
                    ÆÄÀÏÀÇ ³»¿ëÀº ÀúÀå, ÆíÁý, ã±â, ġȯµî°ú °ü·ÃµÈ ´Ù¾çÇÑ ÇÔ¼ö¿¡¼­  
                    »ç¿ëµÉ °ÍÀ̹ǷΠ¸ðµç ÇÔ¼ö¿¡ °ÉÃļ­ (Àü¿ªÀû)À¸·Î °ü¸®µÇ¾îÁ®¾ß ÇÒ  
                    Çʿ䰡 ÀÖ´Ù. ¸¸¾à Àü¿ª º¯¼ö°¡ ¾Æ´Ï¶ó¸é °¢ ÇÔ¼ö¸¶´Ù ÆÄÀÏÀ» ¿­¾î¼­  
                    ³»¿ëÀ» ¸Þ¸ð¸®¿¡ ÀúÀåÇϰí ÀÛ¾÷À» ÇØ¾ß ÇÏ´Â ¹ø°Å·Î¿î Äڵ尡 Ãß°¡ µÇ¾î¾ß 
                    ÇÒ °ÍÀÌ´Ù.        
                    </para> 
                </listitem> 
                </varlistentry> 
 
                <varlistentry> 
                <term>¸®ÅÏ ÁÖ¼Ò</term> 
                <listitem> 
                    <para> 
                    "¸®ÅÏ °ª"°ú È¥µ¿ÇÏÁö ¾Êµµ·Ï ÇÑ´Ù. ¸®ÅÏ ÁÖ¼Ò´Â º¸ÀÌÁö ¾Ê´Â ÀÎÀÚ·Î  
                    »ç¿ëµÇ¸ç ÇÔ¼ö¿¡¼­ Á÷Á¢´Ù·çÁö ¸øÇÏ´Â °ªÀÌ´Ù. ¸®ÅÏ ¾îµå·¹½º´Â ÇÔ¼ö°¡  
                    Á¾·áµÈ ¿ÏÀüÈ÷ Á¾·áµÈ ÈÄ ½ÇÇàµÇ¾î¾ßÇÒ ¿µ¿ªÀÇ ÁÖ¼Ò°ªÀ» ¾Ë·ÁÁØ´Ù.  
                    ´ëºÎºÐÀÇ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­ ¸®ÅÏ ÁÖ¼Ò´Â ÀÚµ¿ÀûÀ¸·Î °è»êµÇ¾î¼­  
                    »ç¿ëÇϹǷΠÇÁ·Î±×·¡¸Ó°¡ Ưº°È÷ ½Å°æ¾µ Çʿ䰡 ¾ø´Ù. ¹Ý¸é  
                    ¾î¼Àºí¸®¾î¿¡¼­ÀÇ °æ¿ì <emphasis>call</emphasis>¸í·ÉÀ» ÀÌ¿ëÇØ¼­  
                    Á¦¾î¸¦ ÇØÁÖ¾î¾ß ÇÑ´Ù.   
                    </para> 
                </listitem> 
                </varlistentry> 
 
                <varlistentry> 
                <term>¸®ÅÏ °ª</term> 
                <listitem> 
                    <para> 
                    ÇÔ¼ö¿¡¼­ ÀÏÀ» ¼öÇàÇÑ ÈÄÀÇ °á°ú¸¦ ¸ÞÀÎ ÇÁ·Î±×·¥¿¡ Àü´ÞÇϱâ À§Çؼ­  
                    »ç¿ëÇÑ´Ù. ´ëºÎºÐÀÇ ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â ÇϳªÀÇ ÇÔ¼ö¿¡ ´ëÇØ¼­ ´ÜÁö  
                    ÇϳªÀÇ °ª¸¸À» ¸®ÅÏÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÑ´Ù.      
                    </para> 
                </listitem> 
                </varlistentry> 
            </variablelist> 
            ÀÌµé Æ¯Â¡µéÀº ¾î¼Àºí¸®¾î»Ó¸¸ ¾Æ´Ï¶ó ´Ù¸¥ ¸ðµç ¾ð¾îµéµµ °øÅëÀûÀ¸·Î °¡Áö°í ÀÖ´Ù.  
        </para> 
        <para> 
            º¯¼ö¸¦ ¸¸µé¾î¼­ ÀúÀåÇϰí, ÀÎÀÚ¸¦ »ç¿ëÇϰí, °ªÀ» ¸®ÅÏÇϴ ǥÇöÇÏ´Â ¹æ¹ýÀº  
            ¾ð¾î¸¶´Ù ´Ù¸£±ä ÇÏÁö¸¸ ¾ð¾î¿¡ °ü°è¾øÀÌ °øÅëÀûÀ¸·Î »ç¿ëµÇ¾î Áø´Ù. ±×·¯¹Ç·Î  
            ¾ð¾î¿¡ °ü°è¾øÀÌ ÀϹÝÀûÀ¸·Î Ç¥ÇöÀÌ °¡´ÉÇÒ °ÍÀÌ´Ù. ÀÌ·¯ÇÑ Ç¥ÇöÀÇ ¹æ¹ýÀ»  
            <emphasis>calling convention</emphasis>¶ó°í ºÎ¸¥´Ù.  
        </para> 
        <para> 
            calling conventionÀº ¸Å¿ì ´Ù¾çÇϸç, ÀڽŸ¸ÀÇ calling conventionÀ» ¸¸µé¾î¼­ 
            »ç¿ëÇÒ ¼ö µµ ÀÖ´Ù. ±×·¸±ä ÇÏÁö¸¸ ´Ù¸¥ ¸¸µé¾îÁø ÇÔ¼ö°¡ ´Ù¸¥ ¾ð¾î·Î Æ÷ÆÃµÇ´Â  
            °ÍÀ» °í·ÁÇØ¾ß µÇ´Â °æ¿ìµµ ÀÖÀ¸¹Ç·Î °¡´ÉÇϸé Ç¥ÁØÀûÀÎ calling conventionÀ»  
            µû¸£´Â °ÍÀÌ ÁÁÀ» °ÍÀÌ´Ù. ¿©±â¿¡¼­´Â C ¾ð¾îÀÇ calling conventionÀ» µû¸¦ °ÍÀÌ´Ù. 
            ¿Ö³ÄÇÏ¸é °¡Àå ³Î¸® »ç¿ëµÇ¾îÁö´Â ¾ð¾îÀÌ¸ç ¶ÇÇÑ °¡Àå ¸¹Àº ¿¹Á¦ Äڵ带 °¡Áö°í  
            Àֱ⠶§¹®ÀÌ´Ù.  
            <note> 
            <para> 
                °ú°Å¿¡´Â ÆÄ½ºÄ®, CÀÇ calling conventionÀ» ÁÖ·Î »ç¿ëÇßÁö¸¸ 
                Áö±ÝÀº »óȲÀÌ Á»´Þ¶óÁ®¼­ java, c++, pythonµîÀÇ ´Ù¾çÇÑ  
                calling conventionÀÌ »ç¿ëµÇ¾îÁö°í ÀÖ´Ù. 
            </para> 
            </note> 
        </para> 
    </section> 
    <section> 
        <title>C calling conventionÀ» ÀÌ¿ëÇÑ ¾î¼Àºí¸®¾î ÇÔ¼ö¼³¸í</title> 
        <para> 
            ¸¸¾à ´ç½ÅÀÌ ÄÄÇ»ÅÍÀÇ ½ºÅÃÀÌ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö¿¡ ´ëÇÑ ÀÌÇØ¸¦ °¡Áö°í ÀÖÁö  
            ¾Ê´Ù¸é ¾î¼Àºí¸®¾î¿¡¼­ ÇÔ¼ö¸¦ ÀÛ¼ºÇÒ ¼ö ¾øÀ» °ÍÀÌ´Ù. ¿ì¸®°¡ ÄÄÇ»ÅÍ¿¡¼­  
            ÇÁ·Î±×·¥À» ½ÇÇà½Ã۸é, ÇÁ·Î±×·¥Àº °¢°¢ÀÇ ÇÔ¼ö¸¦ ¼öÇàÇϱâ À§Çؼ­ ½ºÅÿµ¿ªÀ»  
            È®º¸ÇÑ´Ù. ½ºÅÃÀº ¸»±×´ë·Î ´õ¹Ì¶õ ¶æÀε¥, ´ç½ÅÀÇ ÀÛ¾÷Ã¥»óÀ§¿¡ ³õÀÎ  
            ó¸®ÇØ¾ßµÉ ¼­·ù´õ¹Ì¸¦ ¿¬»óÇÏ¸é µÈ´Ù. ´ç½ÅÀº ó¸®ÇؾßÇÒ ¼­·ù¸¦ ¼­·ù´õ¹Ì¿¡  
            ¿Ã·Á³õ°í ó¸®ÇØ¾ßµÉ °æ¿ì °¡Àå À§¿¡ ÀÖ´Â ¼­·ùºÎÅÍ Ã³¸®ÇÏ°Ô µÉ°ÍÀÌ´Ù.  
            ó¸®µÈ ¼­·ù´Â ´Ù¸¥ ÇÑÂÊÀ¸·Î Ä¡¿ì°Å³ª.. ±âºÐ³ª»Û ¼­·ùÀÇ °æ¿ì ½º·¹±âÅë¿¡  
            ¹ö¸± °ÍÀÌ´Ù. 
        </para> 
        <para> 
            ÄÄÇ»Å͵µ ¸¶Âù°¡Áö·Î ÀÌ·¯ÇÑ ½ºÅÃÀ» °¡Áö°í ÀÖ´Ù. ÄÄÇ»ÅÍ¿¡¼­ ½ºÅÃÀº ¸Þ¸ð¸®ÀÇ  
            óÀ½À§Ä¡¿¡ Á¸ÀçÇÑ´Ù. ´ç½ÅÀº <emphasis>pushl</emphasis>¸í·ÉÀ» ÀÌ¿ëÇØ¼­ ½ºÅÃÀÇ 
            °¡Àå À§¿¡ °ªÀ» ¹Ð¾î ³ÖÀ» ¼ö ÀÖ´Ù. ½ºÅÃÀÇ °¡Àå À§¿¡´Â ·¹Áö½ºÅÍ¿Í ´Ù¸¥ °ªµéÀÌ  
            µé¾î °¥ ¼ö ÀÖ´Ù. ¿ì¸®´Â ¸»ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. "¿Ö ÇÏÇÊ °¡Àå À§¿¡ ÀúÀåÇØ¾ßÇÏÁÒ?"   
            ±× ÀÌÀ¯´Â °£´ÜÇÏ´Ù. Á¢½Ã¸¦ ¾Ä±â À§Çؼ­ ½×¾Æ µÎ¾úÀ» ¶§ À§¿¡¼­ ºÎÅÍ ²¨³»¼­  
            ¾Ä´Â ÀÌÀ¯¸¦ »ý°¢Çغ¸¸é µÈ´Ù. ȤÀº Ã¥»ó¿¡ ½×¿©ÀÖ´Â ¼­·ùÀÇ Ã³¸®¸¦ »ý°¢ÇØ º¸¶ó.  
            À§¿¡¼­ ºÎÅÍ ²¨³»¾î¼­ ó¸®ÇÏ´Â°Ô ¾Æ·¡, ȤÀº Áß°£¿¡¼­ ²¨³»¾î¼­ ó¸®ÇÏ´Â °Íº¸´Ù  
            ÈξÀ ½±´Ù. ÄÄÇ»ÅÍ¿¡¼­ÀÇ ¸Þ¸ð¸® °ü¸® ¿ª½Ã À§¿¡ÀÖ´Â °ÍºÎÅÍ ²¨³»¾î¼­ °¡Á®¿À´Â°Ô  
            ±¸Á¶»ó ÈξÀ ½±µµ·Ï µÇ¾î ÀÖ´Ù. pushlÀ» ÀÌ¿ëÇØ¼­ ½ºÅÃÀÇ °¡Àå À§¿¡ µ¥ÀÌÅ͸¦  
            ¿Ã·È´Ù¸é, ÀÌ µ¥ÀÌÅÍ´Â poplÀ» ÅëÇØ¼­ °¡Á®¿Ã ¼ö ÀÖ´Ù. popl¸í·ÉÀ» ÀÌ¿ëÇÏ¸é  
            ½ºÅÃÀÇ °¡Àå À§¿¡ ÀÖ´Â µ¥ÀÌÅ͸¦ °¡Á®¿À°Ô µÈ´Ù. 
        </para> 
        <para> 
            ½ºÅÿ¡ °ªÀ» ¹Ð¾î ³Ö°ÔµÇ¸é ÇöÀç ½ºÅÃÀÇ Á¦ÀÏ À­ºÎºÐÀÇ ÁÖ¼Ò¸¦ °è»êÇØ¼­ ±× À§Ä¡¿¡ 
            °ªÀ» Ãß°¡ÇÑ´Ù. ½ºÅÃÀÇ Á¦ÀÏ À§ÀÇ À§Ä¡°ªÀº %esp ·¹Áö½ºÅ͸¦ ÅëÇØ¼­ ¾Ë¾Æ¿Ã ¼ö  
            ÀÖ´Ù. Âü°í·Î ½ºÅÃÀº ¾ðÁ¦³ª ¿¬¼ÓÀûÀ¸·Î À§Ä¡ÇÏ°Ô µÇ¹Ç·Î µ¥ÀÌÅÍÀÇ Å©±â¸¸ ¾Ë°í  
            ÀÖ´Ù¸é À§Ä¡¸¦ Á¤È®ÇÏ°Ô °è»êÇÒ ¼ö ÀÖ´Ù. 
        </para> 
        <para> 
            pushlÀ» ÅëÇØ¼­ ½ºÅØ¿¡ ¾î¶² °ªÀ» ³Ö°Ô µÇ¸é ½ºÅÃÀÇ Á¦ÀÏ À§¸¦ °¡¸£Å°´Â Æ÷ÀÎÅÍ¿¡  
            4°¡ ´õÇØÁ®¾ß ÇÑ´Ù. °í·Î %esp¿¡¼­ 4¸¦ »©¸é °¡Àå ÃÖ±Ù¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ Àоî¿Ã  
            ¼ö ÀÖ°Ô µÈ´Ù. (ÀúÀåµÇ´Â µ¥ÀÌÅÍ´Â ¿öµå(word)Áï 4¹ÙÀÌÆ®ÀÓÀ» ±â¾ïÇ϶ó). 
            ¸¸¾à ½ºÅÃÀ¸·Î ºÎÅÍÀÇ µ¥ÀÌÅÍ »èÁ¦´Â <emphasis>popl</emphasis>¸í·ÉÀ» ¼öÇàÇÏ¸é  
            µÈ´Ù. pushl°ú poplÀº ÇϳªÀÇ ¿ÀÆÛ·£µå¸¸À» °¡Áø´Ù.   
        </para> 
        <para> 
            ¸¸¾à ½ºÅÃÀÇ °¡ÀåÀ§¿¡ Á¢±ÙÇÏ±æ ¿øÇÑ´Ù¸é, %esp ·¹Áö½ºÅ͸¦  
            indirect ¾îµå·¹½º ¸ðµå·Î Á¢±ÙÇÏ¸é µÈ´Ù. ´ÙÀ½Àº ½ºÅÃÀÇ °¡Àå À§¿¡ ÀÖ´Â °ªÀ»  
            %eax ·¹Áö½ºÅÍ·Î ¿Å±â´Â ¿¹ÀÌ´Ù.     
            <screen>     
movl (%esp), %eax 
# ȤÀº 
movl %esp, %eax 
            </screen>     
            À§ÀÇ ¿¹´Â indirect ¸ðµå À̹ǷΠ%eax¿¡´Â ½ºÅÃÀÇ À§¿¡ ÀÖ´Â °ªÀÌ ¾Æ´Ñ ½ºÅÃÀÇ 
            À§ÀÇ À§Ä¡ÁÖ¼Ò°¡ ÀúÀåµÈ´Ù. ¸¸¾à ÁÖ¼Ò¿¡ ÀúÀåµÈ °ªÀ» °¡Á®¿À±æ ¿øÇÑ´Ù¸é  
            ¾Æ·¡¿Í °°ÀÌ ÇÏ¸é µÈ´Ù.  
            <screen> 
movl 4(%esp), %eax 
            </screen> 
            À§ÀÇ ¿¹Á¦¸¦ º¸¸é base pointer ÁÖ¼Ò¸ðµå¸¦ ÀÌ¿ëÇØ¼­ °¡Á®¿À°í ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù. 
            %esp¿¡¼­ 4¸¸Å­ À̵¿ÇÑ À§Ä¡¿¡ ÀúÀåµÈ °ªÀ» %eax¿¡ º¹»çÇÑ´Ù.    
        </para> 
        <para> 
            C¾ð¾îÀÇ calling convention¿¡¼­ ½ºÅÃÀº ÇÔ¼öÀÇ ·ÎÄú¯¼ö, ÀÎÀÚ, ¸®ÅÏÁÖ¼ÒµéÀ»  
            ±¸ÇöÇϴµ¥ Áß¿äÇÏ°Ô »ç¿ëµÈ´Ù.   
        </para> 
        <para> 
            <screen> 
subl  $8, %esp 
            </screen> 
            À§ÀÇ ¸í·ÉÀº %esp·Î ºÎÅÍ 8À» »«´Ù(word´Â 4¹ÙÀÌÆ® Å©±â¸¦ °¡ÁüÀ» ±â¾ïÇ϶ó).  
            ÀÌ·±½ÄÀÇ »ç¿ëÀº ÇÔ¼ö¸¦ È£ÃâÇØ¼­ ½ºÅÿ¡ °ªÀ» ÀúÀåÇϴµ¥, ÀÌ·± Àú·± °ÅÃßÀå  
            ½º·¯¿î °Íµé(·¹Áö½ºÅÍ ÁÖ¼Òµî..)À» ÀÌ¿ëÇÏÁö ¾Ê°íµµ °£´ÜÈ÷ »ç¿ëÇÒ ¼ö  
            ÀÖ´Ù´Â ÀåÁ¡À» °¡Áø´Ù. ÀÏ´Ü ÇÔ¼ö°¡ È£ÃâµÇ¾î¼­ ½ºÅÃÀÌ ÇÒ´çµÇ¸é ÇÔ¼ö°¡  
            Á¾·áÇÒ¶§±îÁö °è¼Ó ³²¾Æ ÀÖ°Ô µÈ´Ù. ¿ì¸®°¡ ÇÔ¼ö¿¡¼­ ¸®ÅÏÇÏ¸é  
            ½ºÅà ÇÁ·¡ÀÓ°ú ¿©±â¿¡ ÀÖ´Â º¯¼ö°¡ Á¦°ÅµÈ´Ù. ÀÌ·¸°Ô ƯÁ¤ÇÑ ÇÔ¼öÀÇ ³»ºÎ¿¡¼­¸¸  
            »ç¿ëµÇ´Â Ư¡À¸·Î À̵éÀ» ·ÎÄú¯¼ö¶ó°í ºÎ¸¥´Ù. ¿ì¸®°¡ 
            2 wordÀÇ ·ÎÄà ÀúÀå¼Ò¸¦ ¸¸µé¾ú°í ½ºÅÃÀº ´ÙÀ½°ú °°ÀÌ º¸ÀÏ °ÍÀÌ´Ù.  
            <screen> 
Parameter  #N    <--- N*4+4(%ebp) 
... 
Parameter  2     <--- 12(%ebp) 
Parameter  1     <---  8(%ebp) 
Return Address   <---  4(%ebp)  
Old %ebp         <---   (%ebp) 
Local Variable 1 <--- -4(%ebp)  
Local Variable 2 <--- -8(%ebp)  and (%esp) 
            </screen> 
            ÀÌÁ¦ ¿ì¸®´Â base pointer addressing ¹æ¹ýÀ» ÀÌ¿ëÇØ¼­ %ebp·Î ºÎÅÍ ¿øÇÏ´Â ¸ðµç  
            °ª¿¡ Á¢±ÙÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù. ¹°·Ð ¿©·¯ºÐÀº base pointer addressing ¸ðµå¸¦  
            À§Çؼ­ ´Ù¸¥ ·¹Áö½ºÅ͸¦ ÀÌ¿ëÇÒ ¼öµµ ÀÖ±äÇÏÁö¸¸, ÀϹÝÀûÀº x86¿¡¼­ %ebp·¹Áö½ºÅͰ¡ 
            °¡Àå ºü¸¥ °ü°è·Î %ebp°¡ ¼±È£µÈ´Ù.      
        </para> 
        <para> 
            À̹øÀåÀ» ÅëÇØ¼­ ¿ì¸®´Â Àü¿ªº¯¼ö¿Í static º¯¼ö¸¦ ¸Þ¸ð¸®»ó¿¡¼­ ¾î¶»°Ô  
            Á¢±ÙÇÒ ¼ö ÀÖ´ÂÁö¸¦ ¹è¿ü´Ù. Àü¿ªº¯¼ö¿Í staticÀÇ Â÷ÀÌÁ¡Àº static°¡ ¿ÀÁ÷  
            ÇÔ¼ö³»¿¡¼­¸¸ »ç¿ëµÇ°í Àü¿ªº¯¼ö´Â ¿©·¯ÇÔ¼ö¿¡¼­ »ç¿ëµÉ ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. 
            ´Ù¸¥ ¸ðµç ¾ð¾î¿¡¼­¿Í ¸¶Âù°¡Áö·Î ¾î¼Àºí¸®¾î¿¡¼­µµ ÀÌµé º¯¼ö¸¦ ´Ù·ç´Â ¹æ¹ýÀº  
            µ¿ÀÏÇÏ´Ù.  
        </para> 
        <para> 
            ÇÔ¼ö´Â ½ÇÇàµÉ¶§  ±âº»ÀûÀ¸·Î 3°¡ÁöÀÏÀ» ÇØÁÖ¾î¾ß ÇÑ´Ù. ù¹øÂ°·Î %eax¿¡ ¸®ÅÏ °ªÀ»  
            ÀúÀåÇÑ´Ù. µÎ¹øÂ°·Î È£ÃâµÇ±â Àü¿¡ ½ºÅÃÀ» ÃʱâÈ­(reset)ÇÑ´Ù. ¸¶Áö¸·À¸·Î  
            ¸®ÅÏÀÇ Á¦¾î´Â <emphasis>ret</emphasis> ¸í·ÉÀ» ÅëÇØ¼­ ÀÌ·ç¾îÁø´Ù. À̰ÍÀº  
            ½ºÅÃÀÇ Á¦ÀÏ À§ÀÇ °ªÀ» °¡Á®¿À´Â(pop)ÇÏ´Â ÀÏÀ» Çϰí, ¸í·ÉÀÇ Æ÷ÀÎÅÍÀÎ %eip¸¦  
            ¼³Á¤ÇÑ´Ù.    
        </para> 
        <para> 
            ÇÔ¼ö´Â ¸®ÅÏÇÒ ¶§ ±×°ÍÀ» È£ÃâÇÑ Äڵ忡°Ô Á¦¾î±ÇÀ» µÇµ¹·Á ÁÖ¾î¾ß¸¸ Çϴµ¥,  
            ±×·¯±â À§Çؼ­´Â ¹Ýµå½Ã ÀÌÀüÀÇ ½ºÅÃÇÁ·¹ÀÓÀ» º¹±¸ÇØ ÁÖ¾î¾ß¸¸ ÇÑ´Ù. ±×·¯³ª  
            ret ¸í·ÉÀº ÀÌ·¯ÇÑ ÀÏÀ» ÇÏÁö ¾Ê´Â´Ù. ¿Ö³ÄÇÏ¸é ¿ì¸®ÀÇ ÃÖ±Ù ½ºÅÃÇÁ·¹ÀÓ¿¡ ÀÖ´Â  
            ¸®ÅÏ ÁÖ¼Ò´Â ½ºÅÃÀÇ Á¦ÀÏ À§¸¦ °¡¸®Å°Áö ¾Ê±â ¶§¹®ÀÌ´Ù. ±×·¯¹Ç·Î  
            ÇÔ¼ö¸¦ ¼öÇàÇϱâ Àü¿¡ ¸®ÅÏÇÒ ½ºÅÃÆ÷ÀÎÅÍÀÎ %esp¿Í º£À̽º Æ÷ÀÎÅÍ %ebp¸¦  
            ¸®¼ÂÇØÁÖ¾î¾ß ÇÑ´Ù. ±×·¯¹Ç·Î ÇÔ¼ö·Î ºÎÅÍ ¸®ÅÏÇϱâ À§Çؼ­ ´ÙÀ½°ú °úÁ¤ÀÌ  
            ÇÊ¿äÇÏ°Ô µÈ´Ù.  
            <screen>     
movl   %ebp,  %esp 
popl   %ebp 
ret  
            </screen> 
            ÇÔ¼ö°¡ ¸®ÅÏÇÒ ¶§ ¿©·¯ºÐÀÌ »ç¿ëÇß´ø ¸ðµç ·ÎÄú¯¼ö´Â óºÐµÇ¾î ¹ö¸®°Ô µÊÀ»  
            ÁÖ¸ñÇϱ⠹ٶõ´Ù. ¿Ö³ÄÇÏ¸é ¿©·¯ºÐÀÌ ½ºÅà Æ÷ÀÎÅ͸¦ µÚ·Î À̵¿ÇÏ°Ô µÇ¸é,  
            ±× ¾ÕÀÇ ½ºÅÃÀ» ´Ù¸¥ °ªµéÀÌ µ¤¾î½á ¹ö¸®±â ¶§¹®ÀÌ´Ù. °á±¹ Áö¿ª º¯¼öµéÀº  
            ÇÔ¼ö°¡ »ý¼ºµÇ¾î¼­ ÀÛµ¿Çϰí ÀÖÀ» ¶§¸¸ À¯È¿ÇÏ°Ô µÈ´Ù. ÇÔ¼ö°¡ ¸®ÅÏÇÏ°Ô µÇ¸é  
            ÀÌÁ¦ ÇÁ·Î±×·¥ÀÇ Á¦¾î±ÇÀº ÇÔ¼ö¸¦ È£ÃâÇÑ ÄÚµå·Î ³Ñ¾î¿À°í, Á¦¾î±ÇÀ» °¡Áø ÄÚµå´Â 
            %eax¸¦ ÀÌ¿ëÇØ¼­ ¸®ÅϰªÀ» °Ë»çÇÒ ¼ö ÀÖ°Ô µÈ´Ù.  
        </para> 
        <para> 
            page 47¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ÇØ¼®ÀÌ ÇÊ¿ä. 
        </para> 
    </section> 
    <section> 
        <title>ÇÔ¼ö ¿¹Á¦</title> 
        <para> 
            ÀÌÁ¦ ½ÇÁ¦ ÇÁ·Î±×·¥¿¡¼­ ¾î¶»°Ô ÇÔ¼ö¸¦ È£ÃâÇÏ´ÂÁö ¿¹¸¦ µé¾î¼­ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.     
            ¿ì¸®´Â <emphasis>power</emphasis>(°ÅµìÁ¦°ö)¿¬»êÀ» ÇÏ´Â ÀÌ´Ù. power ÇÔ¼ö´Â  
            2°³ÀÇ ¼ýÀÚ¸¦ ÇÊ¿ä·Î ÇÑ´Ù. ¿¹¸¦ µé¾î 2, 3ÀÌ µé¾î °¬´Ù¸é 2 * 2 * 2 ¿¬»êÀ» ÇÏ°Ô  
            µÇ°í 8À» ¸®ÅÏÇÏ°Ô µÈ´Ù.  
        </para> 
        <para> 
            ´ÙÀ½ ÄÚµå´Â ¿ÏÀüÇÑ ÇÁ·Î±×·¥ÀÌ´Ù. ÆÄÀÏÀÇ À̸§Àº power.s·Î ÇϰڴÙ.  
            <screen> 
# ÇÏ´ÂÀÏ : 2^3 + 5^2ÀÇ °ªÀ» °è»êÈÄ µÇµ¹·ÁÁØ´Ù. 
# 
 
.section .data 
.section .text 
 
.globl _start 
_start: 
pushl $3                    # µÎ¹øÂ° ÀÎÀÚ¿¡ 3À» ³Ö´Â´Ù. 
pushl $2                    # ù¹øÂ° ÀÎÀÚ¿¡ 2¸¦ ³Ö´Â´Ù. 
 
call power                  # power ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.  
 
addl $8, %esp               # ½ºÅÃÀÇ Æ÷ÀÎÅ͸¦ À̵¿ÇÑ´Ù.  
 
pushl %eax                  # ÇÔ¼öÈ£Ãâ °á°ú°ªÀ» ÀúÀåÇÑ´Ù. 
 
pushl $2                    # µÎ¹øÂ° ÀÎÀÚ¿¡ 2¸¦ ³Ö´Â´Ù.  
pushl $5                    # ù¹øÂ° ÀÎÀÚ¿¡ 5¸¦ ³Ö´Â´Ù. 
call power                  # power ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. 
addl $8, %esp               # ½ºÅÃÆ÷ÀÎÅ͸¦ À̵¿ÇÑ´Ù.  
 
popl %ebx                   # µÎ¹øÂ° È£ÃâÇÑ powÇÔ¼öÀÇ ¸®ÅϰªÀº  
                            # ÀÌ¹Ì %eax¿¡ ÀúÀåµÇ¾î ÀÖ´Ù.  
                            # ¿ì¸®´Â ù¹øÂ° powÇÔ¼öÀÇ °á°ú°ªÀ» ½ºÅÿ¡¼­  
                            # °¡Á®¿Â´ÙÀ½ %ebx¿¡ ÀúÀåÇÑ´Ù.   
 
addl %eax, %ebx             # °¢ °á°ú°ªµéÀ» ´õÇÑ´Ù.  
                            # ´õÇÑ °á°ú°ªÀº %ebx¿¡ ÀúÀåµÈ´Ù. 
 
movl $1, %eax               # exit (%ebx °ªÀÌ ¸®ÅϵȴÙ)    
int  $0x80                  # exit ½Ã½ºÅÛ È£ÃâÀ» À§Çؼ­ ÀÎÅÍ·´Æ®¸¦ °Ç´Ù. 
 
 
# ÇÔ ¼ö ¸í : power 
# ÇÏ ´Â ÀÏ : ÁÖ¾îÁö´Â ÀÎÀÚ¸¦ ÀÌ¿ëÇØ¼­ °ÅµìÁ¦°ö ¿¬»êÀ» ÇÑÈÄ 
#            µÇµ¹·ÁÁØ´Ù.    
# 
# ÀÔ    ·Â : ù¹øÂ° ÀÎÀÚ - ±âº»¼ýÀÚ  
#            µÎ¹øÂ° ÀÎÀÚ - °ÅµìÁ¦°ö ¼ýÀÚ  
# 
# Ãâ    ·Â : ¿¬»êÀÇ °á°ú  
# 
# ÁÖ    ÀÇ : ÀÎÀÚ´Â ¹Ýµå½Ã 1º¸´Ù Ä¿¾ß ÇÑ´Ù. 
# 
# º¯ ¼ö µé :  
#            %ebx - ±âº» ¼ýÀÚ 
#            %ecx - °ÅµìÁ¦°ö ¼ýÀÚ  
# 
#            -4($ebp) - ÃÖ±Ù °á°ú°ª  
# 
#            %eax ´Â ÀÓ½ÃÀúÀå¼Ò·Î »ç¿ëµÈ´Ù. 
# 
 
.type power, @function 
power: 
    pushl %ebp           # ÀÌÀüÀÇ º£À̽º Æ÷ÀÎÅ͸¦ ÀúÀåÇÑ´Ù.  
    movl %esp, %ebp      # ½ºÅÃÆ÷ÀÎÅ͸¦ º£À̽º Æ÷ÀÎÅÍ·Î ¸¸µç´Ù. 
    subl $4, %esp        # Áö¿ª ÀúÀå¼Ò¸¦ À§ÇÑ °ø°£À» ¸¸µç´Ù. 
     
    movl 8(%ebp), %ebx   # ù¹øÂ° ÀÎÀÚ¸¦ %eax¿¡ ÀúÀåÇÑ´Ù. 
    movl 12(%ebp), %ecx  # µÎ¹øÂ° ÀÎÀÚ¸¦ %ecx¿¡ ÀúÀåÇÑ´Ù. 
 
    movl %ebx, -4(%ebp)  # ÃÖ±Ù°ªÀ» ÀúÀåÇÑ´Ù.  
 
power_loop_start: 
    cmpl $1, %ecx        # ¸¸¾à powerÀÌ 1À̸é end_power·Î Á¡ÇÁÇÑ´Ù.  
    je end_power 
    movl -4(%ebp), %eax  # ÃÖ±Ù °á°ú°ªÀ» %eax¿¡ ÀúÀåÇÑ´Ù. 
    imul %ebx, %eax      # ÃÖ±Ù °á°ú°ª¿¡ ±âº» ¼ýÀÚ¸¦ °öÇÑ´Ù. 
     
    movl %eax, -4(%ebp)  # ÃÖ±Ù °á°ú°ªÀ» ÀúÀåÇÑ´Ù. 
    decl %ecx            # powerÀ» °¨¼Ò½ÃŲ´Ù. 
 
    jmp power_loop_start # ´ÙÀ½ °ÅµìÁ¦°ö(power)¸¦ ½ÇÇàÇÑ´Ù. 
 
end_power:                  
    movl -4(%ebp), %eax  # ¸®ÅϰªÀ» %eax¿¡ ÀúÀåÇÑ´Ù. 
    movl %ebp, %esp      # ½ºÅÃÆ÷ÀÎÅ͸¦ º¹±¸ÇÑ´Ù. 
    popl %ebp            # º£À̽º Æ÷ÀÎÅ͸¦ º¹±¸ÇÑ´Ù.   
    ret 
            </screen> 
        </para> 
        <para> 
            À§ÀÇ Äڵ带 ÀÛ¼ºÇϰí ÄÄÆÄÀÏ ½ÃŲ´ÙÀ½ ½ÇÇà½ÃÄÑ º¸µµ·Ï ÇÏÀÚ.  
            ±×¸®°í powerÇÔ¼ö¸¦ ´Ù¸¥ ÀÎÀÚ¸¦ Á־ È£ÃâÇØ¼­ °á°ú°ªÀÌ Á¦´ë·Î  
            ³ª¿À´ÂÁö È®ÀÎÇØ º¸µµ·Ï ÇÏÀÚ. À̶§ °á°ú°ªÀº 256À» ³Ñ±âÁö ¾Êµµ·Ï  
            Àû´çÈ÷ ÀÎÀÚ¸¦ Á¶ÀýÇϵµ·Ï ÇØ¾ß ÇÑ´Ù. Å×½ºÆ®°¡ ³¡³µ´Ù¸é  
            µÎ°³ÀÇ °á°ú°ªÀ» »«°ªÀ» ¸®ÅÏÇϵµ·Ï Äڵ带 ¼öÁ¤ÇØ º¸µµ·Ï ÇÏÀÚ.  
            power ÇÔ¼ö¸¦ 3¹ø È£ÃâÇÏ°í ±× °ªÀ» ¸®ÅÏÇÏ´Â Äڵ嵵 ¸¸µé¾î º¸ÀÚ.      
        </para> 
        <para> 
            ÇÁ·Î±×·¥ÀÇ ÄÚµå´Â ¸Å¿ì °£´ÜÇÏ´Ù. ´ç½ÅÀÌ ÀÎÀÚ¸¦ ½ºÅÿ¡ Áý¾î ³Ö°í  
            ÇÔ¼ö¸¦ È£ÃâÇϸé, ÇÔ¼ö´Â ½ºÅà Æ÷ÀÎÅ͸¦ µÚ·Î µÇµ¹¸®°í ½ºÅÿ¡  
            ÀÖ´Â ÀÎÀÚ¸¦ Àоî¿Í¼­ ¿¬»êÀ» ÇÏ°í °á°ú°ªÀ» %eax¿¡ ÀúÀåÇÑ´Ù.  
            À§ ÇÁ·Î±×·¥¿¡¼­´Â powÇÔ¼ö¸¦ µÎ¹ø È£ÃâÇϴµ¥, ¿ì¸®´Â ù¹øÂ° °ªÀ»  
            ½ºÅÿ¡ ÀúÀåÇß´Ù. ÀÌÀ¯´Â ·¹Áö½ºÅÍ¿¡ ´ÜÁö Çѹø¿¡ ÇϳªÀÇ °ª¸¸ ÀúÀåµÉ 
            ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¿ì¸®´Â ù¹øÂ° powÇÔ¼ö ¸®ÅϰªÀ» ½ºÅÿ¡ ÀúÀåÇ졒  
            ³ªÁß¿¡ µÎ¹øÂ° ÇÔ¼öÀÇ °á°ú°¡ ³ª¿ÔÀ»¶§ ½ºÅÃÀÇ °ªÀ» °¡Á®¿Í¼­(pop) 
            µÎ¹øÂ° °á°ú¿Í ´õÇØ¼­ ¿øÇÏ´Â °á°ú¸¦ ¾ò¾î ¿Ã ¼ö ÀÖ´Ù.     
        </para> 
        <para> 
            ÀÌÁ¦ ÇÔ¼ö ÄÚ½ºµå¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸ÀÚ. ÇÔ¼ö¿¡¼­ ÁÖ¸ñÇØ¾ßµÉ  
            ºÎºÐÀº ÇÔ¼ö°¡ ¾î¶»°Ô ¼±¾ðµÇ´ÂÁö, ±×¸®°í ÀÎÀÚ°¡ ¾î¶»°Ô ³Ñ¾î°¡°í 
            ¸®ÅϰªÀ» ³Ñ°ÜÁÖ´ÂÁö ÇÏ´Â ºÎºÐÀÌ´Ù. ÀÌ·¯ÇÑ ÀԷºκаú Ãâ·ÂºÎºÐÀº  
            ÇÁ·Î±×·¡¸Ó°¡ ÇÔ¼ö¸¦ ¼³°èÇÒ ¶§ °¡Àå ÀÏÂ÷ÀûÀ¸·Î °í·ÁÇÏ´Â ºÎºÐÀ¸·Î  
            ÈçÈ÷ ÇÔ¼öÀÇ ÀÎÅÍÆäÀ̽º(Interface)¶ó°í ÇÑ´Ù. ÀÎÅÍÆäÀ̽º¸¦  
            Á¦´ë·Î ±¸¼ºÇϱâ À§Çؼ­ ÇÁ·Î±×·¡¸Ó´Â ½ºÅðú %eax¿¡ ´ëÇØ¼­  
            ÀÌÇØÇϰí ÀÖ¾î¾ß ÇÑ´Ù. ½ºÅÃÀº ÀÔ·Â, %eax´Â Ãâ·Â(¸®ÅÏ)À» À§Çؼ­  
            »ç¿ëµÈ´Ù.        
        </para> 
        <para> 
            °¡Àå ¸ÕÀú ÇØ¾ß ÇÒÀÏÀº ÇÔ¼öÀÇ À̸§À» Á¤ÇÏ´Â ÀÏÀÌ´Ù.  
            <screen> 
.type power,@function 
            </screen> 
            À̰ÍÀº ÇÔ¼öÀÇ À̸§ powerÀ» ÇÔ¼ö¿¡ ¿¬°á ½ÃŰ´Â ÀÏÀ» ÇÑ´Ù. ¿ì¸®´Â 
            powerÀ» ÀÌ¿ëÇØ¼­ ½ÇÁ¦ ÇÔ¼ö¸¦ ½ÇÇà ½Ãų¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ¼±¾ðÀº  
            ÇöÀç·Î½á´Â ±×¸® À¯¿ëÇÏÁö ¾ÊÁö¸¸ ¸¸¾à ÇÁ·Î±×·¥ÀÇ Å©±â°¡ Ä¿Á®¼­  
            ¿©·¯°³ÀÇ ÆÄ¾Ë·Î ³ª´µ¾î¼­ À¯ÁöµÇ¾î¾ß ÇÑ´Ù¸é ¸Å¿ì À¯¿ëÇÏ°Ô  
            »ç¿ëÇÒ ¼ö ÀÖ´Ù. À̰ܿ¡ ´ëÇÑ À庸´Â ³ªÁß¿¡ ÀÚ¼¼È÷  
            ¼³¸íÇϵµ·Ï ÇϰڴÙ. ÇÔ¼ö¸¦ ¼±¾ðÇßÀ¸´Ï ½ÇÁ¦ ÇÔ¼ö Äڵ带  
            Àû¾î¾ß ÇÒ°ÍÀÌ´Ù. ÇÔ¼öÄڵ尡 ½ÃÀ۵Ǵ À§Ä¡´Â ´ÙÀ½°ú °°ÀÌpower  
            ¶óº§À» ÀÌ¿ëÇØ¼­ ¸í½ÃÇÒ ¼ö ÀÖ´Ù. 
            <screen> 
power: 
            </screen> 
            ÀÌ·¸°Ô ÇØ¼­ ¿ì¸®°¡ ÃÖÃÊ ¼±¾ðÇÑ powerÀº ÀÌ ¶óº§ÀÌ ÀÖ´Â ÁÖ¼Ò¸¦  
            °¡¸®Å°°Ô µÈ´Ù. ÀÌÁ¦ºÎÅÍ ½ÇÁ¦ ÇÔ¼öÀÇ ½ÇÇàºÎ¸¦ ÀÛ¼ºÇÏ¸é µÈ´Ù.  
            <screen> 
pushl  %ebp 
movl   %esp, %ebp 
subl   $4, %esp 
            </screen> 
            °¡Àå ¸ÕÀú ½ºÅÃÀ» Á¦¾îÇϱâ À§ÇÑ ¸í·ÉÀÌ ½ÇÇàµÇ´Âµ¥, À§ÀÇ ¸í·ÉÀ» 
            ¼öÇàÇÑÈÄ ½ºÅÃÀÇ ±¸Á¶´Â ¾Æ·¡¿Í °°´Ù.     
            <screen> 
Base Number    <------- 12(%ebp) 
Power          <-------  8(%ebp) 
Return Address <-------  4(%ebp) 
Old %ebp       <-------   (%ebp)  
Current result <-------  -4(%ebp) and (%esp) 
            </screen> 
            ÀÌ ÇÁ·Î±×·¥Àº base number¿Í ¿¬»ê¿¡ »ç¿ëÇÒ ÇÇ¿¬»êÀÚ¸¦ ÀúÀåÇϱâ À§ÇÑ 
            %ebx, ÇöÀç °ªÀ» ÀúÀåÇϱâ À§ÇÑ ·¹Áö½ºÅÍ(-4(%ebp))¸¦ °¡Áö°í ½ÃÀÛÇÑ´Ù. 
            ±×¸®°í ¸î¹øÀÇ °ÅµìÁ¦°öÀ» ÇØ¾ßÇÏ´ÂÁö´Â %ecx¿¡ ÀúÀåµÈ´Ù. %ecx´Â ÇѹøÀÇ 
            °ÅµìÁ¦°öÀÌ ÀϾ¸é 1¾¿ °¨¼ÒµÇ°í 1ÀÌµÇ¸é ·çÇÁ¿¡¼­ ¹þ¾î³­´Ù.    
        </para> 
        <para> 
            °ÅµìÁ¦°ö ÇÔ¼ö¸¦ º¸¸é <emphasis>imul</emphasis>¿Í <emphasis>decl</emphasis>°¡ µîÀåÇÑ´Ù. 
            imulÀº °ö¼À¿¬»êÀ» ÇÑ´Ù. ¿¬»êÀÇ °á°ú´Â µÎ¹øÂ° ¿ÀÆÛ·£µå¿¡ ÀúÀåµÈ´Ù. 
            declÀº ·¹Áö½ºÅÍÀÇ °ªÀ» 1°¨¼Ò½ÃŲ´Ù. ¸í·É¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº 
            Appendix B¸¦ Âü°íÇϱ⠹ٶõ´Ù.      
        </para> 
    </section> 
    <section> 
        <title>Àç±Í ÇÔ¼ö</title> 
        <para> 
            ´ÙÀ½ ÇÁ·Î±×·¥Àº ¸Ó¸®¸¦ Á»´õ ±¼·ÁÁà¾ß ÇÑ´Ù. ÀÌ ÇÁ·Î±×·¥Àº  
            ÆÑÅ丮¾ó(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)Á¤ÀÇ ¶ó°í ÇÑ´Ù. ÆÑÅ丮¾ó ÇÔ¼ö¸¦ ±¸ÇöÇÒ¶§ ÀÌ Àç±Í Á¤ÀǸ¦  
            »ç¿ëÇÏ¸é ¹®Á¦¸¦ ´õ ½±°Ô Ç® ¼ö ÀÖ´Ù.  
        </para> 
        <para> 
            ÆÑÅ丮¾ó ÇÔ¼ö´Â ÇÔ¼öÀÚ½ÅÀ» Æ÷ÇÔÇÏ´Â Àç±ÍÀû ±¸Á¶¸¦ °¡Áø´Ù.  
            ÇÔ¼ö°¡ ÇÔ¼ö ÀÚ½ÅÀ» Æ÷ÇÔÇÑ´Ù¸é ¹«ÇÑÈ÷ ÀÚ½ÅÀ» È£ÃâÇÒ ¼öµµ ÀÖÀ¸¹Ç·Î  
            <emphasis>base case</emphasis> °¡ Á¤ÀǵǾî ÀÖ¾î¾ß¸¸ ÇÑ´Ù. base case´Â 
            Àç±Í°¡ Á¾·áµÇ´Â ½ÃÁ¡À» °áÁ¤ÇÑ´Ù. base case°¡ ¾ø´Ù¸é ÇÔ¼ö´Â ¹«ÇÑÈ÷  
            È£ÃâµÉ °ÍÀÌ°í °á±¹ stack °ø°£À» ¸ðµÎ ¼ÒºñÇÏ°Ô µÉ °ÍÀÌ´Ù. ÆÑÅ丮¾óÀÇ  
            °æ¿ì base case´Â ¼ýÀÚ 1ÀÌ µÈ´Ù. ÆÑÅ丮¾ó ÇÔ¼ö¸¦ Àç±ÍÈ£ÃâÇÏ°Ô µÇ¸é  
            ¹øÈ£´Â 1¾¿ ÁÙ¾îµé°í base case¿Í °°Àº ¼ö°¡ µÈ´Ù¸é ÇÔ¼ö¸¦ ºüÁ®³ª¿À°Ô  
            µÈ´Ù.   
            <itemizedlist> 
                <listitem> 
                    <para> 
                        ¼ýÀÚ¸¦ Æò°¡ÇÑ´Ù.     
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        ¼ýÀÚ°¡ 1Àΰ¡? 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        ±×·¸´Ù¸é ÆÑÅ丮¾ó ¿¬»êÀ» Á¾·áÇÏ°í °ªÀ» ¸®ÅÏÇÑ´Ù. 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        ±×·¸Áö ¾Ê´Ù¸é ¼ýÀÚ¸¦ 1°¨¼Ò ½ÃŰ°í ÆÑÅ丮¾ó ÇÔ¼ö¸¦ Àç È£ÃâÇÑ´Ù.  
                    </para> 
                </listitem> 
            </itemizedlist> 
        </para> 
        <para> 
            <screen> 
# ÆÑÅ丮¾ó ¿¬»êÀ» ÇÑ´Ù. 
# ¿¹¸¦ µé¾î 3Àº 3 * 2 * 1  
#           4´Â 4 * 3 * 2 * 1 
# ÀÌ µÈ´Ù. 
.section .data 
 
.section .text 
 
 
.global _start 
.global factorial 
 
_start: 
pushl  $4            # ÆÑÅ丮¾ó ÇÔ¼ö¿¡ ³Ñ±æ ÀÎÀÚ¸¦ º¹»çÇÑ´Ù. 
 
call   factorial     # ÆÑÅ丮¾ó ÇÔ¼ö¸¦ ½ÇÇàÇÑ´Ù. 
addl   $4, %esp 
movl   %eax, %ebx    # ÆÑÅ丮¾ó ÇÔ¼öÀÇ ¸®ÅϰªÀº %eax¿¡ ÀúÀåµÇÁö¸¸ 
                     # ÇÁ·Î±×·¥ ¸®ÅϰªÀ¸·Î ³Ñ±æ Çʿ䰡 ÀÖÀ¸¹Ç·Î %ebx¿¡ º¹»çÇÑ´Ù.  
 
movl   $1, %eax      # exit ½Ã½ºÅÛ ÄÝÀ» È£ÃâÇÑ´Ù. 
int    $0x80 
 
# factorial ÇÔ¼ö Á¤ÀÇ 
factorial: 
pushl  %ebp          # ¸®ÅÏÇϱâ Àü¿¡ ÀÌÀüÀÇ ½ºÅà Æ÷ÀÎÅ͸¦ ÀúÀåÇØ¾ß ÇÑ´Ù.  
                     # ±×·¡¼­ ÀÌÀüÀÇ ½ºÅÃÆ÷ÀÎÅ͸¦ ÀúÀåÇÑ´Ù.  
                     # ÇÔ¼ö¸¦ À§ÇÑ ±âº» ¿ä¼Ò  
movl   %esp, %ebp     
 
movl   8(%ebp), %eax # ù¹øÂ° ÀÎÀÚ¸¦ %eax¿¡ º¹»çÇÑ´Ù.  
                     # 4(%ebp)´Â ¸®ÅϾîµå·¹½º ÀÌ°í  
                     # 8(%ebp)´Â ù° ÀÎÀÚÀÇ ¾îµå·¹½ºÀÌ´Ù.  
 
cmpl   $1, %eax      # Àç±Í¿¡¼­ ¹þ¾î³ª±â À§ÇÑ base case °ªÀº 1ÀÌ´Ù.  
                     # ¿©±â¿¡¼­ ÀÎÀÚÀÇ °ªÀÌ 1ÀÎÁö¸¦ °Ë»çÇÑ´Ù. 
                     # ¸¸¾à 1 À̶ó¸é end_factorial·Î Á¡ÇÁÇÑ´Ù.   
je     end_factorial 
decl   %eax          # ±×·¸Áö ¾Ê´Ù¸é %eax¸¦ 1 °¨¼Ò ½ÃŲ´Ù. 
pushl  %eax          # ÀÌ °ªÀº ´ÙÀ½ factorialÇÔ¼ö¸¦ È£ÃâÇϸ鼭 Àü´ÞµÇ¾î¾ß ÇϹǷΠ 
                     # ½ºÅÿ¡ ¹Ð¾î ³Ö´Â´Ù. 
call   factorial     # factorialÀ» ½ÇÇàÇÑ´Ù.  
 
movl   8(%ebp), %ebx  
 
imul   %ebx, %eax    # Ãֱ٠ȣÃâÇß´ø factorialÀÇ ¸®Åϰª°ú °öÇÑ´Ù.(%eax¿¡ ÀúÀåµÇ¾î ÀÖÀ½) 
                     # °öÇѰá°ú´Â %eax¿¡ ÀúÀåÇÑ´Ù. 
 
 
end_factorial: 
movl  %ebp, %esp    # ÇÔ¼ö¸®ÅÏÀ» À§ÇÑ ±âº»¿ä¼Ò 
popl  %ebp          # ¸®ÅÏÇϱâ Àü¿¡ ÀÌÀü ÇÔ¼öÀÇ ½ÃÀÛÆ÷ÀÎÅ͸¦ º¹±¸ÇÑ´Ù.  
 
ret                 # ÇÔ¼ö¸¦ ¸®ÅÏÇÑ´Ù. 
            </screen> 
        </para> 
        <para> 
            ¾î¼Àºí, ¸µÅ© °úÁ¤À» °ÅÃļ­ ½ÇÇà½ÃŰ°í ¸®Åϰá°ú¸¦ È®ÀÎÇÑ´Ù. 
            <screen> 
# as factorial.s -o factorial.o 
# ld factorial.o -o factorial 
# ./factorial 
# echo $?  
            </screen> 
            ÇÁ·Î±×·¥ÀÇ ¸®ÅϰªÀÌ 24ÀÓÀ» È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. 24´Â 4ÀÇ ÆÑÅ丮¾ó ¿¬»ê 
            °ªÀ¸·Î 4*3*2*1ÀÇ °á°ú´Ù.  
        </para> 
        <para> 
            ¿©·¯ºÐÀÌ C¿Í °°Àº ¾ð¾î¸¦ ÅëÇØ¼­ Àç±ÍÈ£ÃâÀ» °æÇèÇØ º¸Áö ¾Ê¾Ò´Ù¸é  
            À§ÀÇ Äڵ带 ÀÌÇØÇÏ´Â µ¥¿¡ ¾à°£ÀÇ ¾î·Á¿òÀÌ ÀÖÀ» ¼öµµ ÀÖ´Ù. ÀÌÁ¦ ¾î¶»°Ô  
            ÀÌ·¯ÇÑ °è»êÀÌ °¡´ÉÇÑÁö¸¦ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ.   
            <screen> 
_start: 
pushl   $4 
call    factorial 
            </screen> 
            ÀÌ ÇÁ·Î±×·¥Àº 4ÀÇ ÆÑÅ丮¾óÀ» °è»êÇÑ´Ù. È£ÃâµÉ ÇÔ¼ö¿¡ ÀÌ °ªÀ» ÀÎÀÚ·Î ³Ñ±â±â  
            À§Çؼ­ ÇÔ¼ö È£ÃâÀü¿¡ ½ºÅÿ¡ ¹Ð¾î ³Ö¾ú´Ù. ÇÔ¼öÀÇ ÀÎÀÚ´Â ÇÔ¼ö¿¡¼­ ÀÛ¾÷¿¡ »ç¿ëµÉ 
            µ¥ÀÌÅͶó´Â Á¡À» ±â¾ïÇϱ⠹ٶõ´Ù. À̰æ¿ì ÇÔ¼ö´Â ÇϳªÀÇ ÀÎÀÚ¸¦ °¡Áø´Ù.      
        </para> 
        <para> 
            pushl ¸í·ÉÀº °ªÀ» ½ºÅÃÀÇ °¡ÀåÀ§¿¡ ¹Ð¾î ³Ö´Â´Ù. <emphasis>call</emphasis>¸í·ÉÀº 
            ÇÔ¼ö¸¦ È£ÃâÇϱâ À§Çؼ­ »ç¿ëÇÑ´Ù. 
        </para> 
        <para> 
            ´ÙÀ½ ÁÙÀ» ºÐ¼®ÇØ º¸µµ·ÏÇÏÀÚ. 
            <screen> 
addl   $4,    %esp 
movl   %eax,  %ebx 
movl   $1,    %eax 
int    $0x80 
            </screen> 
            <emphasis>factorial</emphasis>ÇÔ¼ö°¡ ³¡³µÀ¸´Ï, 4ÀÇ ÆÑÅ丮¿­ÀÇ °ªÀ» °¡Á®¿Í¾ß  
            ÇÒ°ÍÀÌ´Ù. ¿ì¼± ½ºÅÃÀ» û¼ÒÇØ¾ß ÇÑ´Ù. <emphasis>addl</emphasis> 
            ¸í·ÉÀ» ÀÌ¿ëÇØ¼­ ½ºÅÃÆ÷ÀÎÅ͸¦ $4¸¸Å­ µÚ·Î ¿Å±ä´Ù. ÆÑÅ丮¾ó ÇÔ¼ö¸¦ È£ÃâÇß´Ù¸é  
            ´ç½ÅÀº È£ÃâÇÑ ÇÔ¼ö°¡ ¸®ÅϵÈÈÄ ¹Ýµå½Ã ½ºÅÃÀÎÀÚ¸¦ û¼ÒÇØ ÁÖ¾î¾ß ÇÑ´Ù.       
        </para> 
        <para> 
            ´ÙÀ½ %eax¸¦ %ebx·Î º¹»çÇÑ´Ù. %eax´Â factorialÇÔ¼öÀÇ ¸®ÅϰªÀÌ´Ù. À̰æ¿ì  
            ¸®ÅϰªÀº ÆÑÅ丮¾ó ¿¬»ê°á°úÀÌ´Ù. ÆÑÅ丮¾ó ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ ÀÎÀÚ¸¦ 4¸¦ ÁáÀ¸¹Ç·Î  
            ¸®ÅϰªÀº 24°¡ µÉ°ÍÀÌ´Ù. ¸®ÅϰªÀº ¾ðÁ¦³ª  
            <emphasis>%eax</emphasis>¿¡ ÀúÀåµÈ´Ù´Â °ÍÀ» ±â¾ïÇϱ⠹ٶõ´Ù. ¿ì¸®´Â ÇÁ·Î±×·¥ÀÌ 
            Á¾·áÇÒ ¶§ ¿î¿µÃ¼Á¦¿¡ 24¸¦ µÇµ¹·Á ÁÖ¾î¾ßÇÑ´Ù. ¸®´ª½ºÀÇ °æ¿ì ÇÁ·Î±×·¥ÀÇ  
            Á¾·á°ªÀº %eax°¡ ¾Æ´Ñ %ebx¿¡ ÀúÀåÇÑ´Ù. ÀÌÁ¦ exit() ½Ã½ºÅÛ È£ÃâÀ» ½ÇÇàÇÏ¸é µÈ´Ù.  
        </para> 
        <para> 
            ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ¿ì¸®´Â Å©°í º¹ÀâÇÑ ÇÁ·Î±×·¥À» ¸¸µé ¶§ »ó´ëÀûÀ¸·Î °£´ÜÇ졒  
            ÀÌÇØÇϱ⠽¬¿î ¿©·¯°³ÀÇ Á¶°¢À¸·Î Äڵ带 ¸¸µé ¼ö ÀÖ´Â ÀÕÁ¡À» ¾òÀ» ¼ö ÀÖ´Ù.  
            ½ÇÁúÀûÀ¸·Î ¾ÆÁÖ °£´ÜÇÑ °æ¿ì¸¦ Á¦¿ÜÇϰí, ´ëºÎºÐÀÇ ÇÁ·Î±×·¥Àº ¿©·¯°³ÀÇ ÇÔ¼ö·Î  
            ÀÌ·ç¾îÁø´Ù. 
        </para> 
        <para> 
            À§ÀÇ ¿¡Á¦¸¦ ÅëÇØ¼­ ¿ì¸®´Â ÇÔ¼ö¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö ¾Ë°Ô µÇ¾ú´Ù. C¿¡¼­¿Í  
            ¸¶Âù°¡Áö·Î ¾î¼Àºí¸®¾î¿¡¼­µµ ÇÔ¼ö´Â ¼±¾ð°ú Á¤ÀÇ ºÎ·Î ³ª´µ°Ô µÈ´Ù. 
            <screen> 
.type  factorial, @function 
factorial: 
            </screen> 
            ÇÔ¼ö´Â º¸Åë À§¿Í °°Àº ¹æ¹ýÀ¸·Î ¸¸µé ¼ö ÀÖ´Ù. .type´Â factorial ÇÔ¼ö¸¦ 
            °¡¸®Å°±â À§ÇÑ ¸µÄ¿ÀÇ ¿ëµµ·Î »ç¿ëµÇ´Âµ¥, »ý·«ÇÒ ¼ö ÀÖ´Ù. ¿ì¸®°¡ ¸¸µç  
            ÇÁ·Î±×·¥¿¡´Â .type¸¦ »ç¿ëÇϰí ÀÖ´Ù. facorial: Àº factorialÀÌ °¡¸®Å°´Â 
            ½ÇÁ¦ ÇÔ¼öÄڵ尡 À̰÷¿¡ À§Ä¡ÇÑ´Ù´Â °ÍÀ» Á¤ÀÇ ÇÑ´Ù. ´ÙÀ½ ÁÙºÎÅÍ ¿ì¸®´Â  
            factorialÀÇ ½ÇÁ¦ÀûÀÎ ÄÚµå ³»¿ëÀ» ±â¼úÇÏ¸é µÈ´Ù. ±â¼úµÈ factorial ÇÔ¼ö´Â 
            call ¸í·ÉÀ» ÅëÇØ¼­ ½ÇÇà ½Ãų ¼ö ÀÖ´Ù.  
        </para> 
        <para> 
            factorialÇÔ¼öÀÇ Ã¹¶óÀο¡´Â ´ÙÀ½°ú °°Àº Äڵ尡 µé¾î°¡ ÀÖ´Ù. 
            <screen> 
pushl   %ebp 
movl    %esp, %ebp 
            </screen> 
            ÀÌ µÎÁÙÀº ÇÔ¼ö¿¡¼­ »ç¿ëÇÒ ½ºÅÿµ¿ªÀ» »ý¼ºÇÑ´Ù. ÀÌ µÎÁÙÀº ¸ðµç ÇÔ¼öÀÇ  
            ½ÃÀۺκп¡ Æ÷ÇԵȴÙ. 
            <screen> 
movl    8(%ebp), %eax 
            </screen> 
            º£À̽º Æ÷ÀÎÅÍ ¾îµå·¹½º¸¦ ÇÔ¼öÀÇ Ã¹¹øÂ° ÀÎÀÚ·Î À̵¿ÇÑ´ÙÀ½  
            À̰÷ÀÇ °ªÀ» %eax¿¡ º¸°¡ÇÑ´Ù. 4(%ebp)´Â ¸®ÅϾîµå·¹½º¸¦  
            °¡Áö°í ÀÖÀ¸¸ç, 8(%ebp)´Â ÇÔ¼öÀÇ Ã¹¹øÂ° ÀÎÀÚ¸¦ °¡¸®Å°°í ÀÖÀ½À»  
            ±â¾ïÇϱ⠹ٶõ´Ù.  
        </para> 
        <para> 
            ´ÙÀ½ ¶óÀο¡¼­ ÇÔ¼öÀÇ ÀÎÀÚ°¡ base case¿¡ µµ´ÞÇß´ÂÁö °Ë»çÇÑ´Ù.  
            ¸¸¾à base case Áï 1À̶ó¸é ÆÑÅ丮¾ó ¿¬»êÀ» ³¡³»°í end_factorial·Î Á¡ÇÁ 
            ÇÑ´Ù. 
            <screen> 
cmpl    %1,  %eax 
je      end_factorial 
            </screen> 
            ¸¸¾à base case¿¡ µµ´ÞÇÏÁö ¾Ê¾Ò´Ù¸é, ¿ì¸®´Â factorial ÇÔ¼ö¸¦ ´Ù½Ã È£Ãâ  
            ÇØ¾ß ÇÑ´Ù. È£ÃâÇÒ ¶§´Â ÀÎÀÚ°ª(%eax)¸¦ 1¸¸Å­ °¨¼Ò ½ÃÄÑ¾ß ÇÑ´Ù.   
            <screen> 
decl    %eax 
            </screen> 
            <emphasis>decl</emphasis>´Â ¸Þ¸ð¸® ¿µ¿ªÀ̳ª ·¹Áö½ºÅÍÀÇ  °ªÀ» 1°¨¼Ò½ÃŰ±â  
            À§Çؼ­ »ç¿ëÇÑ´Ù. ÀÎÀÚ¸¦ 1 °¨¼ÒÇÑ ´ÙÀ½¿¡´Â À̰ªÀ» ½ºÅÿ¡ ¹Ð¾î ³Ö°í  
            ´Ù½Ã factorialÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.  
            <screen> 
pushl   %eax 
call    factorial 
            </screen> 
            ÀÌÁ¦ factorialÇÔ¼ö¸¦ Àç±ÍÈ£Ãâ Çß´Ù. ÀÏ´Ü ÇÔ¼ö¸¦ È£ÃâÇÏ°í ³ª¸é ¿ì¸®´Â %esp¿Í  
            %ebp¸¦ Á¦¿ÜÇϰí´Â ´Ù¸¥ °ªµéÀ» ¾Ë ¼ö ¾ø°ÔµÈ´Ù. ±×·¡¼­ ¿ì¸®´Â ÁÖ¾îÁø ÀÎÀÚ °ªÀ»  
            %ebx¿¡ º¹»çÇϵµ·Ï ÇÑ´Ù.  
            <screen> 
movl    8(%ebp),  %ebx 
            </screen> 
            ÀÌÁ¦ ÀÎÀÚ¿Í ÆÑÅ丮¾ó ÇÔ¼ö¸¦ °öÇÏ¸é µÈ´Ù. ¾Õ¿¡¼­ ¿ì¸®´Â ÇÔ¼öÀÇ ¸®ÅϰªÀº %eax 
            ¸¦ ÅëÇØ¼­ °¡Á®¿Ã ¼ö ÀÖ´Ù´Â °ÍÀ» ¹è¿ü¾ú´Ù. ±×·¯¹Ç·Î %ebx¿Í %eax¸¦ ¼­·Î  
            °öÇÏ¸é µÈ´Ù.  
            <screen> 
imul    %ebx, %eax 
            </screen> 
            °öÇÑ °ªÀº %eax¿¡ ÀúÀåµÈ´Ù. À̰ªÀº ÇÔ¼ö°¡ Á¾·áÇÒ ¶§ ±×´ë·Î ¸®ÅϵȴÙ. ¾Õ¼­  
            ¿ì¸®°¡ ÇÔ¼ö¸¦ ½ÃÀÛÇÒ ¶§ %ebp¸¦ ¹Ð¾î ³Ö°í, %esp¸¦ %ebp·Î º¹»çÇØ¼­ Áö±ÝÀÇ  
            ½ºÅÃÆ÷ÀÎÅ͸¦ ¸¸µé¾ú´Ù. ±×·¸´Ù¸é ÇÔ¼ö°¡ Á¾·áÇÒ¶§ À̰ÍÀ» ¿ø·¡ »óÅ·Π¸¸µå´Â  
            ÀÛ¾÷ÀÌ ÇÊ¿äÇÒ °ÍÀÌ´Ù. ¿ì¸®´Â ¾Æ·¡¿Í °°Àº Äڵ带 ÀÌ¿ëÇØ¼­ ÇöÀç ½ºÅÃÇÁ·¹ÀÓÀ»  
            µÇµ¹¸± ¼ö ÀÖ´Ù. 
            <screen> 
end_factorial: 
movl   %ebp, %esp 
popl   %ebp 
            </screen> 
            ÀÌÁ¦ ret¸í·ÉÀ» ÀÌ¿ëÇØ¼­ ¸®ÅÏÇÏ¸é µÈ´Ù. 
            <screen> 
ret 
            </screen> 
        </para> 
    </section> 
</section> 
<section id="usedfile"> 
    <title>ÆÄÀÏ ´Ù·ç±â</title> 
    <para> 
        ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¹ÖÀÇ ¸¹Àº ºÎºÐÀº ÆÄÀÏÀ» ´Ù·ç´Â ÀÛ¾÷ÀÌ´Ù. ÄÄÇ»ÅͰ¡ ÀÏ´Ü ¸®º×µÇ¸é  
        ÀÌÀüÀÇ ÀÛ¾÷³»¿ëÀº ´ÜÁö ÆÄÀϷθ¸ ³²±â ¶§¹®¿¡, ¾î¶² µ¥ÀÌÅ͸¦ º¸Á¸Çϱâ À§Çؼ­  
        µð½ºÅ©»ó¿¡ ÆÄÀÏ·Î ÀúÀåÇÏ´Â ÀÏÀº ¸Å¿ì Áß¿äÇÑ ÀÛ¾÷ÀÌ´Ù. ¸¶Âù°¡Áö·Î ÇÁ·Î±×·¥¿ª½Ã  
        Á¾·áÇÏ°Ô µÇ¸é ¸Þ¸ð¸®¿¡ °¡Áö°í ÀÖ´ø ¸ðµç ³»¿ëÀ» ÀÒ¾î ¹ö¸®±â ¶§¹®¿¡, Áö¼ÓÀûÀ¸·Î  
        ³²°ÜµÎ¾î¾ßÇÒ µ¥ÀÌÅÍ(persistent data ¶ó°í ºÎ¸¥´Ù)´Â ÆÄÀÏ·Î ³²°ÜµÎ¾î¾ß ÇÑ´Ù. 
    </para> 
    <section> 
        <title>À¯´Ð½º ÆÄÀÏ ¼Ò°³</title> 
        <para> 
            ¸ðµç ¿î¿µÃ¼Á¦´Â ³ª¸§´ë·ÎÀÇ ÆÄÀÏÀ» ´Ù·ç´Â ¹æ¹ýÀ» °¡Áö°í ÀÖ´Ù. ¸®´ª½º´Â  
            À¯´Ð½ºÀÇ ÆÄÀÏ ´Ù·ç±â ¹æ¹ýÀ» äÅÃÇϰí ÀÖ´Ù. À¯´Ð½º ÆÄÀÏÀ» µû¸£´Â ÀÌÀ¯´Â  
            ¸Å¿ì ´Ü¼øÇϰí, °¡Àå ¿À·¡, ±×¸®°í ³Î¸® »ç¿ëµÇ°í ÀÖ´Â Çü½ÄÀ̱⠶§¹®ÀÌ´Ù.  
            À¯´Ð½º ÆÄÀÏÀº ÇÁ·Î±×·¥¿¡ ÀÇÇØ¼­ »ý¼ºµÇ¸ç, ¹ÙÀÌÆ®ÀÇ ¿¬¼ÓµÈ ½ºÆ®¸²À¸·Î  
            ÀÐÀ» ¼ö ÀÖ´Ù. ½Ã½ºÅÛ °ü¸®ÀÚ³ª ÇÁ·Î±×·¡¸Ó´Â ÆÄÀÏ¿¡ ÁÖ¾îÁø °íÀ¯ÇÑ À̸§À¸·Î  
            ÆÄÀÏ¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. ¹Ý¸é ¿î¿µÃ¼Á¦´Â ÆÄÀÏÀ» À̸§ÀÌ ¾Æ´Ñ  
            <emphasis>file descriptor</emphasis>¶ó°í(ÀÌÇÏ ÆÄÀÏÁöÁ¤¹øÈ£) ºÒ¸®¿ì´Â  
            ¼ýÀÚ·Î ÀνÄÇÑ´Ù.  ÇÁ·Î±×·¥»ó¿¡¼­ ¿©·¯ºÐÀº ÆÄÀÏÁöÁ¤¹øÈ£¸¦ ÀÌ¿ëÇØ¼­ Àаųª  
            ¾²´Â ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù.  
        </para> 
        <para> 
            ¿ì¸®°¡ ÀÛ¼ºÇÑ ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ÆÄÀÏÀ» ´Ù·é´Ù.      
            <orderedlist> 
                <listitem> 
                <para> 
                    ¸ÕÀú ¸®´ª½º¿¡ ¾î¶² ÆÄÀÏÀ̸§À» ¿­(open)°ÍÀÎÁö¸¦ ¿äûÇÑ´Ù. ÆÄÀÏÀ»  
                    ¿­¶§´Â ÀбâÀü¿ë,¾²±âÀü¿ë,Àбâ/¾²±â¸ðµÎ °¡´É,ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì 
                    »õ·Î »ý¼ºµî ´Ù¾çÇÑ ¹æ¹ýÀ¸·Î ¿­ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ °ÍÀº open(2) ½Ã½ºÅÛÄÝ 
                    À» ÀÌ¿ëÇØ¼­ ÀÌ·ç¾îÁø´Ù. openÀº ÆÄÀÏÀÇ À̸§, ¸ðµå, ±ÇÇѵîÀ» ÀÎÀÚ·Î  
                    ÀԷ¹޴´Ù. openÀº ½Ã½ºÅÛ ÄÝ ¹øÈ£·Î 5¹øÀÌ´Ù. ÆÄÀÏÀ̸§ÀÇ Ã¹¹øÂ° ¹®ÀÚ´Â  
                    %ebx¿¡ ÀúÀåÇÏ¸é µÈ´Ù. µÎ¹øÂ° ÀÎÀÚÀÎ ¸ðµå´Â %ecx¿¡ ÀúÀåÇÑ´Ù. ¸¸¾à  
                    Àбâ·Î ¿¬´Ù¸é 0À» ¾²±âÀ§Çؼ­ ¿¬´Ù¸é 03101À» ÀúÀåÇÏ¸é µÈ´Ù(¹Ýµå½Ã  
                    °¡Àå ¾Õ¿¡ 0À» ½áÁà¾ß ÇÑ´Ù). ¼¼¹øÂ° ÀÎÀÚ´Â ±ÇÇÑ(permission)°ú °ü·ÃµÈ  
                    ¼³Á¤À» ³Ñ±â±â À§Çؼ­ »ç¿ëÇϴµ¥, %edx¿¡ ÇØ´ç °ªÀ» ÀúÀåÇÏ¸é µÈ´Ù.  
                    ¸¸¾à ¸ðµç À¯Àú¿¡°Ô Àбâ/¾²±â°¡ °¡´ÉÇϵµ·Ï ÇÏ°í ½Í´Ù¸é 0666À» ³Ñ±â¸é  
                    µÈ´Ù.   
                </para> 
                </listitem> 
                <listitem> 
                    <para> 
                    openÀÛ¾÷ÀÌ ¼º°øÀûÀ¸·Î ÀÌ·ç¾îÁ³´Ù¸é ÆÄÀÏ ÁöÁ¤ÀÚ¸¦ ¸®ÅÏÇÏ°Ô µÈ´Ù.  
                    ¸®ÅϰªÀº %eax¸¦ ÅëÇØ¼­ Àоî¿Ã ¼ö ÀÖ´Ù. ¸®ÅÏµÈ ¹øÈ£´Â ÆÄÀÏÀ» °¡¸®Å°´Â  
                    ¿ªÇÒÀ» ÇÑ´Ù.  
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                    ÀÌÁ¦ ÆÄÀÏ ÁöÁ¤ÀÚ¸¦ ÀÌ¿ëÇØ¼­ Àаųª ¾²´Â ÀÛ¾÷À» ÇÏ¸é µÈ´Ù.  
                    read(2)´Â ½Ã½ºÅÛÄÝ ¹øÈ£ 3¹øÀÌ´Ù. ÀÌ ½Ã½ºÅÛÄÝÀº 3°³ÀÇ ÀÎÀÚ¸¦ ÇÊ¿ä·Î  
                    ÇÑ´Ù. ù¹øÂ° ÀÎÀÚ´Â Àб⠿øÇÏ´Â ÆÄÀÏÀÇ ÁöÁ¤ÀÚÀ̸ç %ebx¿¡ ÀúÀåÇÏ¸é µÈ´Ù. 
                    µÎ¹øÂ° ÀÎÀÚ´Â ÀоîµéÀÎ µ¥ÀÌÅͰ¡ ÀúÀåµÉ ¹öÆÛÀÇ ÁÖ¼Ò¸¦ °¡¸®Å°¸ç %ecx¿¡ ÁÖ¼Ò°ªÀ» 
                    ÀúÀåÇÑ´Ù. ¸¶Áö¸· ÀÎÀÚ´Â ¹öÆÛÀÇ Å©±â·Î %edx¿¡ ÀúÀåÇÑ´Ù. ¹öÆÛ´Â section  
                    .bss¸¦ ÀÌ¿ëÇØ¼­ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. read´Â ÆÄÀÏ·Î ºÎÅÍ ÀоîµéÀÎ ¹®ÀÚÀÇ °¹¼ö¸¦  
                    ¸®ÅÏÇϰųª, ¿¡·¯ Äڵ带 ¸®ÅÏÇÑ´Ù. ¿¡·¯ÄÚµå´Â  (-)°ª À̹ǷΠÁ¤»ó¸®Åϰª°ú  
                    ½±°Ô ±¸ºÐÇÒ ¼ö ÀÖ´Ù.   
                    </para> 
                    <para> 
                    write(2)´Â ½Ã½ºÅÛÄÝ ¹øÈ£ 4¹øÀ¸·Î ¹öÆÛ¿¡ ÆÄÀÏ¿¡ ¾µ ³»¿ëÀ» ä¿ö¼­ Àü´ÞÇÏ´Â °ÍÀ»  
                    Á¦¿ÜÇϰí ÀÎÀÚ´Â read¿Í µ¿ÀÏÇÏ´Ù. write ½Ã½ºÅÛÄÝÀº ÆÄÀÏ¿¡ ¾´ µ¥ÀÌÅÍÀÇ Å©±â ȤÀº 
                    ¿¡·¯Äڵ带 ¸®ÅÏÇÑ´Ù.  
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                    ÆÄÀϰü·ÃµÈ ¸ðµç ÀÛ¾÷À» ¸¶ÃÆ´Ù¸é, ¿­¸°ÆÄÀÏÀ» ´Ý¾Æ¾ß ÇÑ´Ù. ÆÄÀÏÀ» ´ÝÀ» ¶§ »ç¿ëµÇ´Â  
                    ½Ã½ºÅÛÄÝÀº 6¹ø ¹øÈ£¸¦ °¡Áö´Â close(2)ÀÌ´Ù.´ÜÁö ´Ý°íÀÚ ÇÏ´Â ÆÄÀÏÀÇ ÁöÁ¤ÀÚ¸¸ 
                    ÀÎÀÚ·Î ³Ñ±â¸é µÈ´Ù.    
                    </para> 
                </listitem> 
            </orderedlist> 
        </para> 
    </section> 
    <section> 
        <title>¹öÆÛ¿Í .bss</title> 
        <para> 
            ÀÌÀüÀå¿¡¼­ ¹öÆÛ¿¡ ´ëÇØ¼­ ¾ð±ÞÇߴµ¥, ÀÚ¼¼È÷ ¼³¸íÇÏÁö´Â ¾Ê¾Ò´Ù. À̹ø Àå¿¡¼­´Â ¹öÆÛ¿¡  
            ´ëÇØ¼­ ÀÚ¼¼È÷ ¼³¸íÇØº¸µµ·Ï ÇÑ´Ù. ¹öÆÛ´Â ´ë·®ÀÇ µ¥ÀÌÅ͸¦ Àü´ÞÇϱâ À§Çؼ­ »ç¿ëµÇ´Â  
            ¿¬¼ÓµÇ´Â ºí·°¿µ¿ªÀÌ´Ù. ´ç½ÅÀÌ ÆÄÀÏ·Î ºÎÅÍ µ¥ÀÌÅ͸¦ Àб⸦ ¿øÇÑ´Ù¸é, ¿äûÀº  
            ¿î¿µÃ¼Á¦·Î Àü´ÞµÇ´Âµ¥, À̶§ ÀÐÀº µ¥ÀÌÅ͸¦ ¾îµð¿£°¡¿¡ ÀúÀåÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ·¯ÇÑ  
            Àå¼Ò¸¦ ¹öÆÛ¶ó°í ÇÑ´Ù. ÀϹÝÀûÀ¸·Î ¹öÆÛ´Â µ¥ÀÌÅÍÀÇ Àӽà ÀúÀåÀå¼Ò·Î »ç¿ëµÇ¸ç, ¹öÆÛ¸¦  
            ÀÌ¿ëÇÔÀ¸·Î¼­ ÇÁ·Î±×·¥Àº µ¥ÀÌÅ͸¦ Á»´õ ½±°Ô ´Ù·ê ¼ö ÀÖ°Ô µÈ´Ù.   
        </para> 
        <para> 
            ¹öÆÛ¸¦ »ý¼ºÇÒ¶§ ¿©·¯ºÐÀº °íÁ¤µÈ Å©±âÀÇ ¹öÆÛ¸¦ ¸¸µéÁö ¾Æ´Ï¸é Çʿ信 µû¶ó Å©±â°¡  
            º¯ÇÏ´Â ¹öÆÛ¸¦ »ý¼ºÇØ¾ß ÇÒÁö ¼±ÅÃÇØ¾ß ÇÑ´Ù. °íÁ¤µÈ Å©±âÀÇ ¹öÆÛ »ý¼ºÀº °£´ÜÇÏ´Ù.  
            .long ³ª .byte ¸¦ ÀÌ¿ëÇØ¼­ ¹öÆÛ·Î »ç¿ëµÉ Å©±â¸¦ Á÷Á¢ ÁöÀåÇÏ¸é µÈ´Ù. ¹Ý¸é µ¿ÀûÀ¸·Î  
            º¯ÇÏ´Â ¹öÆÛÀÇ »ý¼ºÀº ´Ù·ç¾î¾ßÇÒ ³»¿ëÀÌ ¸¹À¸¹Ç·Î ??Àå¿¡¼­ µû·Î ´Ù·çµµ·Ï ÇϰڴÙ.    
            ¹öÆÛ°ø°£À» È®º¸ÇÏ´Â°Ç °£´ÜÇϱä ÇÏÁö¸¸ °ø°£È®º¸¸¦ À§ÇÑ ´ÜÀ§·Î .byte¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù´Â  
            °Í ¶§¹®¿¡ ¸î°¡Áö ¹®Á¦Á¡ÀÌ ¹ß»ýÇÏ´Ù. ù¹øÂ°´Â °ø°£ÀÇ Å©±â¸¦ °è»êÇØ¾ß ÇÏ´Â ¹®Á¦´Ù.  
            ¹®ÀÚ 500ÀÚ¸¦ ÀúÀåÇÏ´Â °Í°ú intÇü ¼ýÀÚ 500°³¸¦ ÀúÀåÇϱâ À§ÇÑ ¿¹¿¡¼­ º¸µíÀÌ  
            ÀúÀåµÇ´Â ¿ø¼ÒÀÇ °¹¼ö´Â µ¿ÀÏÇÏÁö¸¸, ¿ø¼Ò°¡ Â÷ÁöÇÏ´Â Å©±â°¡ ´Ù¸§À¸·Î ÇÊ¿äÇÑ °ø°£°è»ê¿¡¼­ 
            ½Ç¼ö°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. ƯÈ÷ ¾î¼Àºí·¯³ª C¿Í °°Àº Áß/Àú ¼öÁØÀÇ ¾ð¾î¸¦ ÀÌ¿ëÇÒ°æ¿ì  
            ÀÌ·¯ÇÑ ½Ç¼ö´Â ÀÏ»óÀûÀ¸·Î ¹ß»ýÇÒ ¼ö ÀÖ´Ù.   
        </para> 
        <para> 
            µÎ¹øÂ°.. ÀÌ·¯ÇÑ °ø°£Àº ÇÁ·Î±×·¥ ½ÇÇà½Ã »ý¼ºµÈ´Ù. Áß°£¿¡ ÇÊ¿ä ¾ø´Ù°í ÇØ¼­ ¾ø¾Ù ¼ö ¾ø´Ù.  
            ÀÌ´Â °ø°£ÀÌ ³¶ºñµÉ ¼ö ÀÖÀ½À» ÀǹÌÇÑ´Ù.  
        </para> 
        <para> 
            ¹°·Ð ÀÌµé ¹®Á¦¿¡ ´ëÇÑ ÇØ¹ýµµ Á¸ÀçÇϴµ¥ .text, .data ¼½¼ÇÀ» »ç¿ëÇÏ´Â °ÍÀÌ´Ù.  
            .bss »ö¼ÇÀº ÀúÀå°ø°£À» È®º¸ÇÒ ¼ö ÀÖÁö¸¸ ÃʱâÈ­ ÇÒ¼ö´Â ¾ø´Ù. .data ¼½¼ÇÀÇ °æ¿ì 
            °ø°£À» È®º¸ÇÏ°í °ªÀ» ÃʱâÈ­ ÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ Æ¯¼º ¶§¹®¿¡ °ªÀ» ÃʱâÈ­ÇÒ ÇÊ¿ä¾ø´Â  
            °ø°£À» È®º¸ÇϰíÀÚ ÇÒ¶§ ÁÖ·Î »ç¿ëÇÑ´Ù. .bss´Â ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù.    
            <screen> 
.section    .bss 
  .lcomm  my_buffer, 500 
            </screen> 
            <emphasis>.lcomm</emphasis>Àº 500byteÀÇ °ø°£À» ÇÒ´çÇϰí, °ø°£À» °¡¸®Å°±âÀ§ÇÑ ½Éº¼·Î  
            my_bufferÀ» »ý¼ºÇÑ´Ù. ¸¸µé¾îÁø °ø°£Àº ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù.   
            <screen> 
movl  $my_buffer,  %ecx 
movl  500, %edx 
movl  3, %eax 
int   $0x80 
            </screen> 
            À§ÀÇ ÄÚµå´Â read ½Ã½ºÅÛÄÝÀ» ½ÇÇà½ÃŲ ¿¹·Î, 500¹ÙÀÌÆ®¸¸Å­ÀÇ µ¥ÀÌÅ͸¦ Àо my_buffer·Î  
            º¹»çÇÑ´Ù. C½ºÅ¸ÀÏ·Î ¹Ù²ã º¸ÀÚ¸é ¾Æ·¡ÀÇ ÄÚµå Á¤µµ°¡ µÉ°ÍÀÌ´Ù.     
            <screen> 
read(fd, my_buffer, 500); 
            </screen> 
            my_bufferÀ» »ç¿ëÇÒ ¶§ °¡Àå ¾Õ¿¡ ´Þ·¯($)Ç¥½Ã°¡ ÀÖÀ½À» ÁÖ¸ñÇϱ⠹ٶõ´Ù. $Ç¥½Ã°¡  
            »ç¿ëÇÒ °æ¿ì  immediate ¸ðµå ¾îµå·¹½º »óŰ¡ µÇ°í ¹öÆÛÀÇ ½ÃÀÛÀ§Ä¡¸¦ °¡¸®Å°°Ô µÈ´Ù.  
            °á°úÀûÀ¸·Î %ecx´Â my_bufferÀÇ ÀúÀå°ø°£ÀÇ ½ÃÀÛ ÁÖ¼Ò¸¦ °¡¸®Å°°Ô µÈ´Ù. C¾ð¾î¸¦  
            ÇØºÃ´Ù¸é °á±¹Àº Æ÷ÀÎÅÍ¿Í ºñ½ÁÇÑ °³³äÀ̶ó´Â »ý°¢ÀÌ µé °ÍÀÌ´Ù. 
        </para> 
    </section> 
    <section> 
        <title>Ç¥ÁØÆÄÀϰú Ư¼ö ÆÄÀϵé</title> 
        <para> 
            ´ç½ÅÀÌ ÇÁ·Î±×·¥À» ½ÇÇà½ÃŰ¸é ±âº»ÀûÀ¸·Î ¿©´Â ÆÄÀϵéÀÌ ¸î°Ô ÀÖ´Ù. ¸®´ª½º´Â  
            ´ÙÀ½°ú °°Àº 3°³ÀÇ ÆÄÀÏÀ» ±âº»ÀûÀ¸·Î »ý¼º½ÃŲ´Ù.   
            <variablelist> 
                <varlistentry> 
                <term>STDIN</term> 
                <listitem> 
                    <para> 
                        Ç¥ÁØ ÀÔ·Â(standard input)À¸·Î, Àбâ Àü¿ëÀÌ´Ù. º¸Åë Űº¸µå·ÎºÎÅÍÀÇ  
                        ÀÔ·ÂÀ» ¹Þ¾ÆµéÀδÙ. Ç¥ÁØ ÀÔ·ÂÀ» À§ÇÑ ÆÄÀÏÁöÁ¤ÀÚ´Â ¾ðÁ¦³ª 0ÀÌ´Ù. 
                    </para> 
                </listitem> 
                </varlistentry> 
 
                <varlistentry> 
                <term>STDOUT</term> 
                <listitem> 
                    <para> 
                        Ç¥ÁØ Ãâ·Â(standard output)À¸·Î, ¾²±â Àü¿ëÀÌ´Ù. ¸ð´ÏÅÍ È­¸é¿¡  
                        Ãâ·ÂÇϱâ À§Çؼ­ »ç¿ëµÈ´Ù. Ç¥ÁØ Ãâ·ÂÀ» À§ÇÑ ÆÄÀÏÁöÁ¤ÀÚ´Â ¾ðÁ¦³ª 1ÀÌ´Ù.   
                    </para> 
                </listitem> 
                </varlistentry> 
 
                <varlistentry> 
                <term>STDERR</term> 
                <listitem> 
                    <para> 
                        Ç¥ÁØ ¿¡·¯(standard error)À¸·Î, ¾²±â Àü¿ëÀÌ´Ù. ¸ð´ÏÅÍ È­¸é¿¡  
                        Ãâ·Â(¾²±â)Çϱâ À§Çؼ­ »ç¿ëµÈ´Ù. ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù. ¾îÂ÷ÇÇ ¸ð´ÏÅÍ È­¸é¿¡ 
                        Ãâ·ÂÇÏ´Â °Å¶ó¸é STDOUT¿Í ´Ù¸¦°Ô ¹¹°¡ ÀÖ´À³Ä¶ó°í »õ°¢ÇÒ ¼öµµ ÀÖÀ»°Í °°´Ù.  
                        ¸¸¾à È­¸éÃâ·ÂÀ» Çϴµ¥, Á¤»óÀûÀÎ ¸Þ½ÃÁö¿Í ¿¡·¯ ¸Þ½ÃÁö°¡ °°Àº ÆÄÀÏÁöÁ¤ÀÚ¸¦  
                        ¾´´Ù¸é À̸¦ ±¸ºÐÇØ ³»±â°¡ ¸Å¿ì Â¥Áõ³¯ °ÍÀÌ´Ù. Ç¥ÁØ¿¡·¯¸¦ µû·Î ºÐ¸®ÇÏ¹Ç·Î½á  
                        ¿¡·¯¸Þ½ÃÁö¸¦ ÀϹݸ޽ÃÁö¿Í ½±°Ô ºÐ¸®ÇÒ ¼ö ÀÖ´Ù.   
                    </para> 
                </listitem> 
                </varlistentry> 
            </variablelist> 
            Űº¸µå ÀԷ°ú È­¸é Ãâ·Â°°Àº °ÍµéÀ» ÆÄÀÏ·Î ´Ù·ëÀ¸·Î À̵é ÀÔ/Ãâ·ÂÀ» ½±°Ô ½ÇÁ¦ÆÄÀÏ·Î  
            º¸³¾ ¼öµµ ÀÖ´Ù. ÀÌ·¯ÇÑ°É ÀçÁöÇâ(redirected)À̶ó°í ÇÑ´Ù. ÀçÁöÇâ°ú °ü·ÃµÈ ³»¿ëÀº  
            ÀÌ ¹®¼­ÀÇ ¹üÀ§¸¦ ¹þ¾î³ª¹Ç·Î ÀÚ¼¼È÷ ¼³¸íÇÏÁø ¾Ê°Ú´Ù. ÀçÁöÇâ°ú °ü·ÃµÈ ³»¿ëÀº  
            UNIX »ç¿ë°ú °ü·Ã ´Ù¸¥ Ã¥µéÀ» Âü°íÇϱ⠹ٶõ´Ù.   
        </para> 
        <para> 
            Űº¸µå, ¸ð´ÏÅÍ¿Í °°Àº °Íµé ¿Ü¿¡µµ À¯´Ð½º´Â ´Ù¸¥ ¸ðµç ÀåÄ¡µé ¿¹¸¦ µé¸é  
            ½Ã¸®¾ó Æ÷Æ®, ¿Àµð¿À ÀåÄ¡, ³×Æ®¿öÅ© ¿¬°áµé±îÁöµµ ÆÄÀÏ·Î ´Ù·é´Ù.  
            »Ó¸¸ ¾Æ´Ï¶ó ÇÁ·Î¼¼½º°£ÀÇ Åë½ÅÀ» À§Çؼ­ »ç¿ëµÇ´Â pipe¿Í °°Àº °Íµé ¿ª½Ã ÆÄÀÏ·Î  
            ´Ù·é´Ù. ¸ðµç°ÍÀ» ÆÄÀÏ·Î ´Ù·ç°Ô µÇ¹Ç·Î½á µ¿ÀÏÇÑ ¹æ¹ýÀ» ½á¼­ À̵é ÀåÄ¡¸¦ Á¦¾îÇÒ ¼ö 
            ÀÖ°Ô µÈ´Ù. ±âº»ÀûÀ¸·Î read, write¸¦ ÀÌ¿ëÇÏ´Â Á¤µµ·Î ÀÌµé ¸ðµç ÀåÄ¡ÀÇ ÀÔÃâ·ÂÀ»  
            ÇØ°áÇÒ ¼ö ÀÖ´Ù.   
        </para> 
    </section> 
    <section> 
        <title>ÇÁ·Î±×·¥¿¡¼­ ÆÄÀÏÀÇ ÀÌ¿ë</title> 
        <para> 
            À̹ø¿¡´Â ÆÄÀÏÀ» ´Ù·ç´Â °£´ÜÇÑ ÇÁ·Î±×·¥À» ¸¸µé¾î º¸µµ·Ï ÇϰڴÙ. ÀÌ ÇÁ·Î±×·¥Àº  
            µÎ°³ÀÇ ÆÄÀÏÀ» ÀÌ¿ëÇÑ´Ù. ÇϳªÀÇ ÆÄÀϷκÎÅÍ ¹®ÀÚ¸¦ ÀÐ¾î µéÀ̰í ÀоîµéÀÎ ¹®ÀÚ¸¦  
            ¿µ¹® ´ë¹®ÀÚ·Î º¯°æÇÏ´Â ÀÏÀ» ÇÑ´Ù. ÀÌ ÇÁ·Î±×·¥ÀÇ ¾Æ·¡ÀÇ ÁÖ¿ä ºÎºÐÀ¸·Î ÀÌ·ç¾îÁø´Ù.  
        </para> 
        <para> 
            <itemizedlist> 
                <listitem> 
                    <para> 
                    ¸Þ¸ð¸®ÀÇ ºí·°¿¡ ÀÖ´Â ¹®ÀÚµ¥ÀÌÅ͸¦ ´ë¹®ÀÚ·Î º¯°æÇÏ´Â ÇÔ¼ö¸¦ °¡Áø´Ù.  
                    ÀÌ ÇÔ¼ö´Â µ¥ÀÌÅͰ¡ ÀÖ´Â ¸Þ¸ð¸®ºí·°ÀÇ ÁÖ¼Ò¿Í Å©±â¸¦ ÀÎÀÚ·Î ¹Þ´Â´Ù.          
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                    ÁÖ¿ä ÄÚµåÁßÀÇ Çϳª´Â ÆÄÀÏ·Î ºÎÅÍ µ¥ÀÌÅ͸¦ ¹öÆÛ·Î ÀоîµéÀÌ´Â ÄÚµåÀÌ´Ù.  
                    ÀÌ ÄÚµå´Â ÆÄÀÏ¿¡ ´õÀÌ»ó µ¥ÀÌÅͰ¡ ¾øÀ» ¶§±îÁö ¹öÆÛ·Î ÀÐ¾î µéÀ̰í À§ÀÇ  
                    ´ë¹®ÀÚ º¯°æÇÔ¼ö¿¡ ¹öÆÛ¸¦ ÀÎÀÚ·Î ³Ñ±â°í ½ÇÇàÇØ¼­ °á°ú°ªÀ» ´Ù¸¥ ÆÄÀÏ·Î  
                    ÀúÀåÇÑ´Ù.     
                    </para> 
                </listitem> 
            </itemizedlist> 
        </para> 
        <para> 
            Á¶±Ý º¹ÀâÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Ù º¸¸é ÇÁ·Î±×·¥ Àü¿ªÀûÀ¸·Î °íÁ¤µÇ¾î¼­ »ç¿ëÇØ¾ßÇÒ  
            ¸¹Àº »ó¼ö °ªµéÀÌ ÇÊ¿äÇØÁø´Ù. ¿¹µéµé¾î ½Ã½ºÅÛ ÄݹøÈ£´Â º¯ÇÏÁö ¾Ê´Â ¼ýÀÚ·Î ±¸¼ºµÇ¾î  
            Àִµ¥, »ç¿ëÇÒ ¶§¸¶´Ù ¼ýÀÚ·Î ±â¾ïÇØ³»¼­ ¾²´Â°Ç ¸Å¿ì ±ÍÂúÀº ÀÏÀÏ °ÍÀÌ´Ù. ÀÌ·²°æ¿ì 
            <emphasis>.equ</emphasis>¸¦ ÀÌ¿ëÇÑ´Ù. .equ´Â ÀÏÁ¾ÀÇ º°ÄªÀ» ¸¸µé¾îÁÖ±â À§Çؼ­ »ç¿ëÇÏ´Â 
            Áö½Ã¾î·Î CÀÇ #define°ú ºñ½ÁÇÑ ÀÏÀ» ÇÑ´Ù.     
        </para> 
        <para> 
            .equÀÇ ½ÇÁúÀûÀÎ »ç¿ë¿ëµµ¸¦ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ.  
            <screen> 
.equ LINUX_SYSCALL  0x80 
            </screen> 
            À§¿Í °°ÀÌ Çϸé Äڵ峻¿¡¼­ ½Ã½ºÅÛÄÝÀ» È£ÃâÇÒ ¶§, º¸±â Èûµç 0x80´ë½Å LINUX_SYSCALLÀ»  
            »ç¿ëÇÒ ¼ö ÀÖ´Ù. 
            <screen> 
int  $LINUX_SYSCALL 
            </screen> 
            0x80º¸´Ù´Â ÈξÀ ÀÐ°í ±â¾ïÇØ³»±â ½±´Ù. º¹ÀâÇÑ Äڵ忡¼­ .equ´Â °¡µ¶¼ºÀ» ³ôÀ̴µ¥  
            Áß¿äÇÑ ¿ªÇÒÀ» ÇÑ´Ù.  
        </para> 
        <para> 
            ´ÙÀ½Àº ½ÇÁ¦ ÀÛµ¿°¡´ÉÇÑ ¹®ÀÚº¯ÇÑ ÇÁ·Î±×·¥ÀÌ´Ù. ÆÄÀϸíÀº file.s·Î ÀúÀåÇϵµ·Ï ÇÏÀÚ.    
            <screen> 
# ÇÏ ´Â ÀÏ : ÆÄÀÏ·Î ºÎÅÍ ¹®ÀÚ¸¦ ÀоîµéÀÌ°í ´ë¹®ÀÚ·Î ¹Ù²ÛÈÄ ´Ù¸¥ ÆÄÀÏ·Î ÀúÀåÇÑ´Ù. 
# ÇÁ·Î¼¼½º : 1. ÀÐÀ» ÆÄÀÏÀ» ¿¬´Ù. 
#            2. ¾µ ÆÄÀÏÀ» ¿¬´Ù. 
#            3. ÆÄÀÏÀÇ ³¡ÀÌ ¾Æ´Ï¶ó¸é ´ÙÀ½ÀÇ ÇÁ·Î¼¼½º¸¦ ¹Ýº¹ÇÑ´Ù. 
#               1) ÆÄÀÏ·Î ºÎÅÍ ¹®ÀÚ¿­À» Àо ¸Þ¸ð¸®¿¡ ³Ö´Â´Ù. 
#               2) ¸Þ¸ð¸®·Î ºÎÅÍ °¢ ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î º¯°æÇÑ´Ù. 
#               3) º¯°æµÈ ¹®ÀÚ´Â ÆÄÀÏ·Î ÀúÀåÇÑ´Ù. 
 
.section .data 
 
# »ó¼öµé  
.equ  SYS_OPEN,  5 
.equ  SYS_WRITE, 4  
.equ  SYS_READ,  3 
.equ  SYS_CLOSE, 6 
.equ  SYS_EXIT,  1 
 
# open()¿¡ »ç¿ëÇÒ ¿É¼Ç  
# À̵鿡 ´ëÇÑ ³»¿ëÀº open()ÇÔ¼öÀÇ manÆäÀÌÁö¸¦ Âü°íÇÑ´Ù.  
.equ  O_RDONLY,  0 
.equ  O_CREAT_WRONLY_TRUNC,  03101 
 
# Ç¥ÁØ ÆÄÀÏ ÁöÁ¤ÀÚ 
.equ  STDIN,  0 
.equ  STDOUT, 1 
.equ  STDERR, 2 
 
# ½Ã½ºÅÛ ÄÝ Áß´Ü(interrupt) 
.equ  LINUX_SYSCALL, 0x80 
 
.equ  END_OF_FILE,       0  # ÆÄÀÏÀÇ ³¡À» °Ë»çÇϱâ À§Çؼ­ »ç¿ëÇÑ´Ù. 
                            # read()ÀÇ ¸®Åϰª°ú ºñ±³ÇÑ´Ù. 
 
.equ  NUMBER_ARGUMENTS,  2 
 
.section .bss 
# ¹öÆÛ - ÆÄÀÏ·Î ºÎÅÍ µ¥ÀÌÅ͸¦ ÀоîµéÀÎ µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§ÇÑ  
#        ¸ñÀûÀ¸·Î »ç¿ëµÈ´Ù.  
#        ¹öÆÛÀÇ Å©±â´Â ¿©·¯°¡Áö ÀÌÀ¯·Î 16,000À» ÃʰúÇÒ ¼ö ¾ø´Ù. 
.equ  BUFFER_SIZE,  500 
.lcomm BUFFER_DATA, BUFFER_SIZE 
 
.section .text 
 
# ½ºÅà À§Ä¡ 
.equ  ST_SIZE_RESERVE, 8 
.equ  ST_FD_IN,    -4 
.equ  ST_FD_OUT,   -8 
.equ  ST_ARGC,     0      # ÀÎÀÚÀÇ °¹¼ö 
.equ  ST_ARGV_0,   4      # ÇÁ·Î±×·¥ÀÇ À̸§ 
.equ  ST_ARGV_1,   8      # ÀоîµéÀÏ ÆÄÀÏÀÇ À̸§  
.equ  ST_ARGV_2,   12     # ÀúÀåÇÒ ÆÄÀÏÀÇ À̸§  
 
.globl _start 
 
_start: 
### ÃʱâÈ­ °ü·Ã ###  
# ½ºÅÃÆ÷ÀÎÅ͸¦ ÀúÀåÇÑ´Ù. 
movl  %esp, %ebp 
# ½ºÅÿ¡ ÆÄÀÏ ÁöÁ¤ÀÚ¸¦ ÀúÀåÇϱâ À§ÇÑ °ø°£À» ÇÒ´çÇÑ´Ù.  
subl  $ST_SIZE_RESERVE, %esp 
 
open_files: 
open_fd_in: 
### ÀоîµéÀÏ ÆÄÀÏÀ» ¿¬´Ù ### 
movl  $SYS_OPEN, %eax             # syscallÀ» ¿¬´Ù.  
movl  ST_ARGV_1(%ebp), %ebx       # %ebx¿¡ ÆÄÀÏÀ̸§À» ³Ö´Â´Ù.  
movl  $O_RDONLY, %ecx             # read-only Ç÷¡±× 
movl  $0666, %edx                 # ÆÄÀÏ ±ÇÇÑÀ» 0666À¸·Î ÇÑ´Ù. ´©±¸µçÁö ÀÐ°í¾µ¼ö ÀÖ´Ù. 
int   $LINUX_SYSCALL              # ¸®´ª½º È£Ãâ 
 
store_fd_in: 
movl  %eax, ST_FD_IN(%ebp)        # ¸®ÅÏµÈ ÆÄÀÏ ÁöÁ¤ÀÚ¸¦ ÀúÀåÇÑ´Ù.  
 
open_fd_out: 
### ÀúÀåÇÒ ÆÄÀÏ ¿­±â ### 
movl  $SYS_OPEN, %eax             # ÆÄÀÏ ¿­±â 
movl  ST_ARGV_2(%ebp), %ebx       # ¿­ ÆÄÀÏÀ̸§À» ÁöÁ¤ÇÑ´Ù. 
movl  $O_CREAT_WRONLY_TRUNC, %ecx # ¾²±âÀ§ÇÑ Ç÷¹±×ÀÇ ¼³Á¤ 
movl  $0666, %edx                 # ÆÄÀϱÇÇÑ ¼³Á¤ 
int   $LINUX_SYSCALL              # ¸®´ª½º È£Ãâ 
 
 
store_fd_out: 
movl  %eax, ST_FD_OUT(%ebp)       # ÆÄÀÏ ÁöÁ¤ÀÚ¸¦ ÀúÀåÇÑ´Ù. 
 
### ÁÖ¿ä ·çÇÁ ½ÃÀÛ ### 
read_loop_begin: 
 
### ÆÄÀÏ·Î ºÎÅÍ ÀоîµéÀÌ´Â ºÎºÐ ### 
movl $SYS_READ, %eax 
movl ST_FD_IN(%ebp), %ebx         # ÀоîµéÀÏ ÆÄÀÏ ÁöÁ¤ÀÚ  
movl $BUFFER_DATA, %ecx           # ÀоîµéÀÎ µ¥ÀÌÅ͸¦ ÀúÀåÇÒ ¹öÆÛ 
movl $BUFFER_SIZE, %edx           # ÀоîµéÀÏ Å©±â 
int  $LINUX_SYSCALL               # ½Ã½ºÅÛÄÝÀÇ ½ÇÇà 
                                  # ¸®ÅϰªÀº %eax¿¡ ÀúÀåµÈ´Ù. 
 
cmpl $END_OF_FILE, %eax           # ÆÄÀÏÀÇ ³¡ÀÎÁö °Ë»çÇÑ´Ù. 
jle  end_loop                     # ¸¸¾à ±×·¸´Ù¸é end_loop·Î Á¡ÇÁÇÑ´Ù. 
 
continue_read_loop: 
### ÀÔ·ÂµÈ ¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î º¯°æÇÏ´Â ºÎºÐ ### 
pushl $BUFFER_DATA                # ¹öÆÛÀÇ À§Ä¡ 
pushl %eax                        # ¹öÆÛÀÇ »çÀÌÁî 
call  convert_to_upper            # ´ë¹®ÀÚ º¯°æÇÔ¼öÀÇ È£Ãâ 
popl  %eax                         
addl  $4, %esp 
 
### º¯°æµÈ ¹®ÀÚ¸¦ ÆÄÀÏ¿¡ ¾´´Ù ###  
movl  %eax, %edx                  # ¹öÆÛÀÇ Å©±â 
movl  $SYS_WRITE, %eax 
movl  ST_FD_OUT(%ebp), %ebx       # ÀúÀå¿¡ »ç¿ëÇÒ ÆÄÀÏ ÁöÁ¤ÀÚ 
movl  $BUFFER_DATA, %ecx          # ¹öÆÛÀÇ À§Ä¡ 
int   $LINUX_SYSCALL              # write()¸¦ È£ÃâÇÑ´Ù.  
 
### ·çÇÁ¸¦ °è¼Ó¼öÇàÇÑ´Ù. ### 
jmp  read_loop_begin 
 
 
end_loop: 
### ÆÄÀÏÀ» ´Ý´Â´Ù. ### 
# ¿©±â¿¡¼­´Â ¿¡·¯Ã¼Å©´Â ÇÏÁö ¾Ê´Â´Ù. 
movl  $SYS_CLOSE, %eax 
movl  ST_FD_OUT(%ebp), %ebx 
int   $LINUX_SYSCALL 
 
### Á¾·á ÄÚµå ### 
movl  $SYS_EXIT, %eax 
movl  $0, %ebx 
int   $LINUX_SYSCALL 
 
 
# ÇÏ ´Â ÀÏ : ÀÌ ÇÔ¼ö´Â ¼Ò¹®ÀÚ¸¦ ´ë¹®ÀÚ·Î º¯°æÇÑ´Ù. 
#        
.equ  LOWERCASE_A, 'a' 
.equ  LOWERCASE_Z, 'z' 
.equ  UPPER_CONVERSION, 'A' - 'a' 
 
.equ  ST_BUFFER_LEN,  8 
.equ  ST_BUFFER, 12 
 
 
convert_to_upper: 
  pushl %ebp 
  movl  %esp, %ebp 
  movl  ST_BUFFER(%ebp), %eax 
  movl  ST_BUFFER_LEN(%ebp), %ebx 
  movl  $0, %edi 
 
  cmpl  $0, %ebx 
  je  end_convert_loop 
 
convert_loop: 
movb  (%eax, %edi, 1), %cl 
 
cmpb  $LOWERCASE_A, %cl 
jl    next_byte 
cmpb  $LOWERCASE_Z, %cl 
jg    next_byte 
 
addb  $UPPER_CONVERSION, %cl 
movb  %cl, (%eax, %edi, 1) 
next_byte: 
incl  %edi 
cmpl  %edi, %ebx 
jne   convert_loop 
 
end_convert_loop: 
movl  %ebp, %esp 
popl  %ebp 
ret 
            </screen> 
        </para> 
        <para> 
            À§ ÇÁ·Î±×·¥À» touuper.s ·Î ÀúÀåÇÏ°í ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ÄÄÆÄÀÏ Çϵµ·Ï ÇÏÀÚ. 
            <screen> 
# as toupper.s -o toupper.o 
# ld toupper.s -o toupper 
            </screen> 
            ÀÌ ÇÁ·Î±×·¥À» ½ÇÇà ½ÃŰ¸é ¸ðµç ¼Ò¹®ÀÚ¸¦ ´ëºÐÀÚ·Î º¯°æ½ÃŲ´Ù. ¿¹¸¦ µé¾î¼­  
            toupper.s ¸¦ ´ë¹®ÀÚ·Î º¯È¯½Ã۰í ÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.  
            <screen> 
# ./toupper toupper.s toupper.uppercase: 
            </screen> 
            touuper.uppercase ¸¦ Àо¸é ¿ø·¡ÀÇ ÆÄÀÏÀÇ ¸ðµç ³»¿ëÀÌ ´ë¹®ÀÚ·á º¯°æµÈ°É  
            È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.  
        </para> 
        <para> 
            ±×·³ ÇÁ·Î±×·¥¿¡ ´ëÇØ¼­ Á»´õ ÀÚ¼¼È÷ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ. 
        </para> 
        <para> 
            ÇÁ·Î±×·¥ÀÇ Ã¹¹øÂ° ¼½¼ÇÀº <emphasis>CONSTANTS.</emphasis>·Î ½ÃÀÛÇÑ´Ù.  
            ÇÁ·Î±×·¥¿¡¼­ »ó¼ö(constant)´Â ÇÁ·Î±×·¥ÀÌ ¾î¼Àºí ȤÀº ÄÄÆÄÀÏ µÉ¶§ ÇÒ´çµÇ´Â 
            °ªÀ¸·Î º¯°æµÉ ¼ö ¾ø´Â °ªÀÌ´Ù. »ó¼ö¸¦ ¾ðÁ¦ ÇÒ´çÇØ¼­ ¾²´À³Ä´Â ÇÁ·Î±×·¡¸ÓÀÇ  
            ÃëÇâ¿¡ µû¶ó ´Þ¶óÁú ¼ö ÀÖÁö¸¸, ÀϹÝÀûÀ¸·Î ÇÁ·Î±×·¥ÀÇ °¡Àå óÀ½¿¡ µÎ´Â °ÍÀ»  
            ¿øÄ¢À¸·Î ÇÑ´Ù. ÇÁ·Î±×·¥ Àü¿ªÀûÀ¸·Î ¿µÇâÀ» ¹ÌÄ£´Ù´Â »ó¼öÀÇ Æ¯Á¤»ó  
            ½±°Ô È®ÀÎ °¡´ÉÇÑ À§Ä¡¿¡ µÎ´Â°Ô °ü¸®Çϱ⿡ ÁÁ±â ¶§¹®ÀÌ´Ù. À§ÀÇ ÇÁ·Î±×·¥¿¡¼­´Â 
            ÆÄÀÏ ÁöÁ¤ÀÚ¿Í ÀÎÀÚÁ¢±Ù, ¹öÆÛÅ©±â, ½Ã½ºÅÛÄÝ ¹øÈ£ µî °áÄÚ ¹Ù²îÁö ¾Ê´Â ¸ðµç  
            °ªµéÀ» »ó¼ö·Î ¼±¾ðÇØ¼­ »ç¿ëÇϰí ÀÖ´Ù.   
        </para> 
        <para> 
            ¾î¼Àºí¸®¾î¿¡¼­ »ó¼öÀÇ ¼±¾ðÀº <emphasis>.equ</emphasis>¸¦ ÀÌ¿ëÇÑ´Ù.  
            C/C++ÀÇ #define ¹®À̶ó°í º¼ ¼ö ÀÖ´Ù. »ó¼öÀÇ À̸§À» ¾Õ¿¡ ¾²°í ±×´ÙÀ½  
            °ªÀ» ¾²¸é µÈ´Ù.       
        </para> 
        <para> 
            ´ÙÀ½Àº <emphasis>BUFFERS.</emphasis> ¼½¼ÇÀ¸·Î ÇÁ·Î±×·¥ÀÇ ¹öÆÛ¿Í °ü·ÃÇØ¼­  
            »ç¿ëÇÑ´Ù. ¿©±â¿¡¼­µµ ¹öÆÛÀÇ Å©±â´Â BUFFER_SIZE. »ó¼ö·Î Á¤ÀÇÇØ¼­ »ç¿ëÇ졒  
            ÀÖ´Ù. ¸¸¾à ¹öÆÛÀÇ Å©±â¸¦ ¹Ù²Ù°í ½Í´Ù¸é BUFFER_SIZE. »ó¼öÀÇ °ª¸¸ º¯°æÇØ  
            ÁÖ¸é µÈ´Ù. ¹öÆÛÀÇ À̸§Àº BUFFER_DATA ·Î Çß´Ù. ¿©±â¿¡¼­ »ó¼ö¸¦ »ç¿ëÇϸ鼭 ¾ò 
            À» ¼ö ÀÖ´Â ÀÕÁ¡ÀÌ Çϳª ³ª¿Ô´Âµ¥. ƯÁ¤ °ªÀ» ÀϰüµÇ°Ô °ü¸®ÇÒ ¼ö ÀÖ´Ù´Â  
            Á¡ÀÌ´Ù. ¸¸¾à »ó¼ö¸¦ »ç¿ëÇÏÁö ¾Ê¾Ò´Ù¸é ¹öÆÛÀÇ Å©±â¸¦ ¹Ù²Ü ¶§ ÀÏÀÏÀÌ  
            ¹öÆÛÀÇ Å©±â¸¦ ã¾Æ¼­ ¹Ù²ãÁà¾ß ÇÒ°ÍÀÌ´Ù. ±×¸¸Å­ ½Ç¼ö¸¦ È®·üµµ ¸¹Àºµ¥ »ó¼öÀÇ  
            »ç¿ëÀº ÀÌ·¯ÇÑ ½Ç¼öµµ ÁÙ¿©ÁØ´Ù.   
        </para> 
        <para> 
            ´ÙÀ½Àº _start. ¼½¼ÇÀε¥, ¿ì¼±Àº ÄÚµåÀÇ ¸¶Áö¸·¿¡ ÀÖ´Â convert_to_upperÁ¤ÀǸ¦  
            ¸ÕÀú º¸µµ·Ï ÇÏÀÚ. ¿©±â´Â ½ÇÁ¦·Î ¹®ÀÚÀÇ º¯°æÀ» À§ÇØ »ç¿ëµÇ´Â ÄÚµå ¿µ¿ªÀÌ´Ù.   
            ¿ª½Ã ÇÔ¼öÀÇ Ã³À½Àº ÇÔ¼ö³»¿¡¼­ »ç¿ëµÉ °¢Á¾ »ó¼ö¸¦ Á¤ÀÇÇÏ´Â Äڵ尡  
            µé¾î°¡ ÀÖ´Ù.   
            <screen> 
.equ  LOWERCASE_A,   'a'              # a¿Í z´Â ¼Ò¹®ÀÚÀÎÁö üũÇϱâ À§ÇÑ 
.equ  LOWERCASE_Z,   'z'              # ¿ëµµ·Î »ç¿ëµÈ´Ù. 
.equ  UPPER_CONVERSION, 'A' - 'a'     # ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ°£ÀÇ Å©±â±³Á¤À» À§ÇÑ ¿ëµµ 
            </screen> 
            À§ÀÇ µÎ°³ÀÇ Á¤ÀÇ´Â º¯È¯ÇÒ ¿µ¹®ÀÌ ¼Ò¹®ÀÚÀÎÁö¸¦ üũÇϱâ À§ÇÑ ¿ëµµ·Î »ç¿ëÇÑ´Ù. 
            ASCII(12) Å×ÀÌºí¿¡¼­ ¹®ÀÚ 'a'¿Í 'z'°¡ ¿¬¼ÓÀûÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù´Â °Í¿¡ Âø¾ÈÇÑ  
            ÄÚµå´Ù. ¸¸¾à¿¡ ¿ì¸®°¡ ¹Þ¾ÆµéÀÎ ¹®ÀÚ°¡ ¼Ò¹®ÀÚ¶ó¸é ´ë¹®ÀÚ·Î º¯°æ½ÃÄÑÁà¾ß  
            Çϴµ¥, ´ë¹®ÀÚ·Î º¯°æÇϱâ À§Çؼ­´Â 'A'¿¡¼­ 'a'ÀÇ Â÷ÀÌ ¸¸Å­¸¸ ´õÇØÁÖ¸é µÈ´Ù.  
            ´ÙÀ½ÀÇ CÄڵ带 È®ÀÎÇØ º¸±â ¹Ù¶õ´Ù. 
            <screen> 
#include <stdio.h> 
 
int main() 
{ 
    printf("%d\n", 'A' - 'a'); 
    printf("%c\n", 'a' + ('A' - 'a')); 
    return 0; 
} 
            </screen> 
        </para> 
        <para> 
            ´ÙÀ½ ¶óÀÎÀº ½ºÅÃÀÇ À§Ä¡¸¦ °¡¸®Å°±â À§ÇÑ ¸î°³ÀÇ »ó¼ö¸¦ ¼±¾ðÇϰí ÀÖ´Ù.  
            ÀÌ´Â ÇÔ¼ö¿¡¼­ ÀÎÀÚ¸¦ »ç¿ëÇϱâ À§Çؼ­´Â ÇÔ¼ö È£ÃâÀü ½ºÅÿ¡ ÀÎÀÚ¸¦ ¹Ð¾î ³Ö´Âµ¥, 
            ÇÔ¼ö³»¿¡¼­´Â ÀÌ ½ºÅÃÀÇ À§Ä¡¸¦ ÀÌ¿ëÇØ¼­ ÀÎÀÚÀÇ °ªÀ» ¾ò¾î¿Ã ¼ö Àֱ⠶§¹®ÀÌ´Ù. 
            Çϱ⠶§¹®ÀÌ´Ù. ÀÌµé »ó¼ö´Â Á¢µÎ»ç¸¦ ST·Î Çϰí Àִµ¥, ¸®ÅÏ ÁÖ¼Ò´Â 4,  
            ¹öÆÛÀÇ ±æÀÌ´Â 8, ±×¸®°í ¹öÆÛÀÇ ÁÖ¼Ò´Â 12·Î °áÁ¤Çß´Ù. ÀÌ·¸°Ô Á¤ÀÇÇØ ³õÀº  
            ½ºÅÃÁÖ¼ÒÀÇ »ç¿ë¿ëµµ´Â convert_to_upper: À» º¸¸é Á»´õ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ»  
            °ÍÀÌ´Ù.     
            <screen> 
movl  ST_BUFFER(%ebp), %eax 
movl  ST_BUFFER_LEN(%ebp), %ebx 
            </screen> 
            À§ÄÚµå´Â ÇÔ¼öÀÇ ÀÎÀÚÀÇ °ªÀ» ½ºÅÿ¡¼­ ÀоîµéÀÌ´Â ÀÏÀ» ÇÑ´Ù. ±×´ÙÀ½ %edi¿¡ 0À» 
            º¹»çÇÑ´Ù. %edi´Â ¹öÆÛÀÇ À§Ä¡¸¦ °¡¸®Å°´Â ÀÌÅÍ·¹ÀÌÅͿ뵵·Î »ç¿ëµÈ´Ù.  
            ¹öÆÛÀÇ À§Ä¡´Â %eax + %edi ·Î °è»êÇÑ´Ù(À̸¦Å×¸é ¹è¿­¿¡¼­ ÷ÀÚ¸¦ Áõ°¡½ÃÄѼ­  
            À§Ä¡¸¦ °¡Á®¿À´Â ¹æ½ÄÀÌ´Ù) 
        </para> 
        <para> 
            ¸¸¾à¿¡ %ebx Áï ¹öÆÛ¿¡ ÀÖ´Â µ¥ÀÌÅÍÀÇ ±æÀ̰¡ 0À̶ó¸é ·çÇÁ¸¦ Á¾·á½ÃŲ´Ù.   
            <screen> 
cmpl  $0, %ebx 
je  end_convert_loop 
            </screen> 
            ±×·¸Áö ¾Ê°í µ¥ÀÌÅÍÀÇ ±æÀ̰¡ 0º¸´Ù Å©´Ù¸é convert_loop:¸¦ µ¹¸é¼­ ¹®ÀÚ º¯È¯  
            ÀÛ¾÷À» ¼öÇàÇÑ´Ù.  
            <screen>     
movb  (%eax, %edi, 1), %cl 
 
cmpb  $LOWERCASE_A, %cl 
jl    next_byte 
cmpb  $LOWERCASE_Z, %cl 
jg    next_byte 
            </screen>     
            ¿©±â¿¡´Â movb, cmpb ¸í·ÉÀÌ »ç¿ëµÇ°íÀÖ´Ù. µÚ¿¡ b°¡ ºÙ¾ú´Âµ¥, ÀÌ´Â ¹ÙÀÌÆ®  
            ´ÜÀ§·Î ¿¬»êÀ» ½Ç½ÃÇ϶ó´Â ¶æÀÌ µÇ°Ú´Ù. %eax·Î ºÎÅÍ %edi ¸¸Å­ À̵¿ÇÑÈÄ  
            1¹ÙÀÌÆ®¸¦ %cl·Î º¹»çÇÑ´Ù. ±×ÈÄ %clÀÌ ¼Ò¹®ÀÚ¸é ´ë¹®ÀÚ·Î º¯°æÇÏ°Ô µÈ´Ù.   
        </para> 
        <para> 
            ÀÌ·¸°Ô ÇØ¼­ ¹®ÀÚº¯°æ°ú °ü·ÃµÈ ÄÚµå´Â ¸ðµÎ ÀÌÇØÇÏ°Ô µÇ¾ú´Ù. ÀÌÁ¦ ³²Àº °ÍÀº  
            ÆÄÀÏ·Î ºÎÅÍ ÀоîµéÀÌ°í ¾²´Â ºÎºÐÀÌ´Ù. À̺κÐÀ» ´Ù·ç±â À§Çؼ­´Â  
            UNIXÀÇ open() ½Ã½ºÅÛÄÝÀ» ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö ¾Ë¾Æ¾ß ÇÑ´Ù. ´ÙÀ½Àº open()  
            ½Ã½ºÅÛÄÝÀ» »ç¿ëÇϱâ À§ÇÑ ½Ã½ºÅÛ ÄݹøÈ£¿Í ÀÎÀÚ¸¦ À§ÇÑ ·¹Áö½ºÅ͵é ÀÌ´Ù. 
            <orderedlist> 
                <listitem> 
                <para> 
                    %eax ´Â ½Ã½ºÅÛ ÄÝ ¹øÈ£¸¦ ÀúÀåÇÑ´Ù. openÀÇ ½Ã½ºÅÛ ÄݹøÈ£´Â 5ÀÌ´Ù. 
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    %ebx ¿¡´Â ¿­°íÀÚ ÇÏ´Â ÆÄÀÏÀÇ À̸§ÀÌ µé¾î°£´Ù. ÆÄÀÏÀ̸§Àº ¹Ýµå½Ã  
                    ³¡ÀÌ null·Î ³¡³ª´Â ¹®ÀÚ¿­À̾î¾ß ÇÑ´Ù. 
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    %ecx ¿¡´Â ÆÄÀÏÀ» ¿­¶§ »ç¿ëÇÒ ¿É¼ÇÀÌ µé¾î°£´Ù. Àбâ Àü¿ë, ¾²±âÀü¿ë,  
                    Àбâ/¾²±âÁß ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì ÆÄÀÏÀ»  
                    »ý¼ºÇÒ°ÍÀÎÁö, Á¸ÀçÇÒ °æ¿ì¿¡´Â Á¸ÀçÇÏ´Â ÆÄÀÏÀ» ¿­°ÇÁö ¾Æ´Ï¸é  
                    ¿¡·¯¸¦ ¸®ÅÏÇÒ °ÇÁö µîµµ °áÁ¤ÇÒ ¼ö ÀÖ´Ù. 
                </para> 
                </listitem> 
                <listitem> 
                <para> 
                    %edx ´Â ÆÄÀÏÀÇ ±ÇÇÑÀ» ¼³Á¤Çϱâ À§ÇØ »ç¿ëÇÑ´Ù. ¿©±â¿¡´Â ÀϹÝÀûÀÎ  
                    À¯´Ð½º ±ÇÇÑÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.  
                </para> 
                </listitem> 
            </orderedlist> 
            ÀÌ ½Ã½ºÅÛ ÄÝÀÌ ½ÇÇà ÈÄ, ¿ì¸®´Â Àбâ Àü¿ëÀÇ ÆÄÀÏ ÁöÁ¤ÀÚ¸¦ ¾òÀ» ¼ö ÀÖ´Ù. ÀÌ  
            ÆÄÀÏ ÁöÁ¤ÀÚ´Â %eax¸¦ ÅëÇØ¼­ ¾ò¾î¿Ã ¼ö ÀÖ´Ù.  
        </para> 
        <para> 
            ±×·³ ÀÌÁ¦ ÆÄÀÏÀ» ¿­¾î¾ß ÇҰǵ¥, ÀÌ ÇÁ·Î±×·¥ÀÇ °æ¿ì ¿­¾î¾ßµÉ ÆÄÀÏ À̸§À»  
            ÇÁ·Î±×·¥ ½ÇÇàÀÎÀÚ·Î ³Ñ°Ü ¹Þ°í ÀÖ´Ù. ´ÙÇེ·´°Ôµµ ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀÎÀÚ´Â  
            ½±°Ô ÀоîµéÀÏ ¼ö ÀÖ´Â À§Ä¡¿¡ null-terminate 󸮱îÁö ¸¶Ä£ ±ò²ûÇÑ »óÅ·Π 
            ÀúÀåµÇ¾î ÀÖ´Ù. ¸®´ª½º¿¡¼­ ÇÁ·Î±×·¥ÀÌ ½ÇÇàÀÎÀÚÀÇ ÀúÀåµÈ À§Ä¡¸¦ °¡¸®Å°´Â  
            Æ÷ÀÎÅÍ´Â ½ºÅÿ¡ ÀúÀåÀÌ µÈ´Ù. ÀÎÀÚÀÇ ¼ö°¡ ÀúÀåµÈ Æ÷ÀÎÅÍÀÇ À§Ä¡´Â 8(%esp)¿¡ 
            ÇÁ·Î±×·¥ÀÇ À§Ä¡´Â 12(%esp) ±×¸®°í ½ÇÁ¦ ÀÎÀÚ´Â 16(%esp)¿¡ ÀúÀåµÈ´Ù.  
            C ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ °æ¿ì¿¡´Â argv ¹è¿­ °ªÀ» ÅëÇØ¼­ ¾ò¾î¿À°Ô µÈ´Ù. 
        </para> 
        <para> 
            ¿ì¸®ÀÇ Ã¹¹øÂ° ÇÁ·Î±×·¥¿¡¼­ ÃÖ±ÙÀÇ ½ºÅà À§Ä¡´Â %ebp¿¡ ÀúÀåÇϵµ·Ï Çß´Ù. ±×¸®°í  
            ÆÄÀÏ ÁöÁ¤ÀÚ¸¦ ÀúÀåÇϱâ À§ÇÑ ½ºÅðø°£À» ÇÒ´çÇϰí ÀÖ´Ù. ³ªÁß¿¡ ¿©±â¿¡  
            ¿­¸°ÆÄÀÏ ÁöÁ¤ÀÚ°¡ µé¾î°¡°Ô µÈ´Ù. 
        </para> 
        <para> 
            ÀÌ ÇÁ·Î±×·¥Àº ¿ì¼± ù¹øÂ° ½ÇÇàÀÎÀÚ¸¦ ¾ò¾î¿Â´Ù. ÀÌ ½ÇÇàÀÎÀÚ´Â ¿ì¸®°¡ ÀоîµéÀÌ±â  
            À§ÇÑ ¿øº» ÆÄÀÏÀÇ À̸§À̵ȴÙ. ¿øº» ÆÄÀÏÀÇ °æ¿ì¿¡´Â ´ÜÁö Àб⸸ ÇÏ¸é µÇ¹Ç·Î  
            Àбâ Àü¿ëÀ¸·Î ¿­¾ú´Ù. ÆÄÀÏÀÇ ±ÇÇÑÀº $0666·Î %edx¸¦ ¸¦ ÅëÇØ¼­ ³Ñ°å´Ù. ±× ÈÄ  
            %eax¿¡ ½Ã½ºÅÛÄÝÀÇ ¹øÈ£¸¦ ÀúÀåÇÏ°í ½Ã½ºÅÛÄÝÀ» ½ÇÇàÇÑ´Ù. ½ÇÇàÀÌ ¼º°øÀûÀ¸·Î  
            ³¡³ª°Ô µÇ¸é, ¿ì¸®´Â ½ºÅÿ¡ ÀÖ´Â ÆÄÀÏÁöÁ¤ÀÚ¸¦ ÀÐ¾î ¿Ã ¼ö ÀÖ°Ô µÈ´Ù.  
        </para> 
        <para> 
            Áö±Ý±îÁö¿Í °°Àº ¹æ¹ýÀ¸·Î º¹»çµÉ ÆÄÀÏ À̸§À» ¾²±â Àü¿ëÀ¸·Î ¿¬´Ù.  
        </para> 
        <para> 
            ÀÌÁ¦ ÆÄÀÏÀ» Àаí/¾²´Â ÁÖ¿ä ºÎºÐ¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸ÀÚ. ¿ì¸®´Â ÀÔ·ÂµÈ ÆÄÀÏ·Î ºÎÅÍ  
            °íÁ¤µÈ Å©±âÀÇ µ¥ÀÌÅ͸¦ Àоî¿À°í, À̰ÍÀ» ´ë/¼Ò¹®ÀÚ º¯È¯ ÇÔ¼ö¿¡ ³Ñ±ä ÈÄ,  
            ±× °á°ú °ªÀ» Ãâ·Â ÆÄÀÏ¿¡ ¾²°Ô µÈ´Ù. ´ë/¼Ò¹®ÀÚ º¯È¯Àº ¹®ÀÚÇϳªÇϳª¸¦ Â÷·Ê´ë·Î  
            °Ë»çÇØ¼­ º¯È¯ÇÏ°Ô µÈ´Ù.    
        </para> 
        <para> 
            µ¥ÀÌÅ͸¦ Àбâ À§Çؼ­ ¿ì¸®´Â read ½Ã½ºÅÛ ÄÝÀ» »ç¿ëÇϰí ÀÖ´Ù. ÀÌ ½Ã½ºÅÛ ÄÝÀº  
            ÆÄÀÏ ÁöÁ¤ÀÚ·Î ºÎÅÍ µ¥ÀÌÅ͸¦ Àоîµé¿©¼­ ¹öÆÛ¿¡ ÁöÁ¤µÈ Å©±â¸¸Å­ º¹»çÇÑ´Ù.  
            ÀÌ ½Ã½ºÅÛÄÝÀº ½ÇÇàÀ» ¸¶Ä£ÈÄ ÀоîµéÀÎ µ¥ÀÌÅÍÀÇ Å©±â¸¦ ¸®ÅÏÇÑ´Ù. ¸¸¾à  
            ÆÄÀÏÀÇ ³¡À» ¸¸³ª°Ô µÇ¸é 0À» ¸®ÅÏÇÑ´Ù. 
        </para> 
        <para> 
            Àбâ Äڵ念¿ªÀº %eaxÀÇ °ªÀÌ ÆÄÀÏÀÇ ³¡(0)À» °¡¸®Å°°Ô µÇ¸é ºüÁ®³ª¿À°Ô µÈ´Ù.    
        </para> 
        <para> 
            ¸¸¾à ÆÄÀÏÀÇ ³¡ÀÌ ¾Æ´Ï¶ó¸é ÀоîµéÀÎ µ¥ÀÌÅ͸¦ convert_to_upperÇÔ¼ö·Î ³Ñ°Ü¼­  
            ¹®ÀÚ¸¦ º¯È¯ÇÏ°Ô µÈ´Ù.  
        </para> 
        <para> 
            ¸¶Áö¸·À¸·Î write ½Ã½ºÅÛÄÝÀ» ÀÌ¿ëÇØ¼­ º¯È¯µÈ ¹®ÀÚµ¥ÀÌÅ͸¦ º¹»çÇÒ ÆÄÀÏ¿¡ ¾²°Ô  
            µÈ´Ù. ¸ðµç µ¥ÀÌÅÍÀÇ Ã³¸®°¡ ´Ù ³¡³ª°í ·çÇÁ¸¦ ¹þ¾î³ª¸é ¸¶Áö¸·À¸·Î ¿­¸°  
            ÆÄÀÏ ÁöÁ¤ÀÚµéÀ» ¸ðµÎ ´Ý¾ÆÁØ´Ù. ÆÄÀÏÀ» ´Ý±â À§Çؼ­´Â close½Ã½ºÅÛÄÝ È£ÃâÇÑ´Ù.  
            ÀÌ ½Ã½ºÅÛ ÄÝÀº %ebx¿¡ ´ÝÀ» ÆÄÀÏÁöÁ¤ÀÚ¸¦ ³Ñ±ä´ÙÀ½ È£ÃâÇÏ¸é µÈ´Ù.   
        </para> 
    </section> 
    <section> 
        <title>º¹½À</title> 
        <para> 
            <itemizedlist> 
                <listitem> 
                    <para> 
                        ¹öÆÛ¶õ ¹«¾ùÀΰ¡ ? 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        Ç¥ÁØ ÆÄÀÏ ÁöÁ¤ÀÚ´Â ¹«¾ùÀ̸ç, ¾îµð¿¡ »ç¿ëÇÒ ¼ö Àִ°¡ ? 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        .data ¼½¼Ç°ú .bss ¼½¼ÇÀÇ Â÷ÀÌ´Â ¹«¾ùÀΰ¡ . 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        ÆÄÀÏ·Î ºÎÅÍ ÀÐ°í ¾²±â À§Çؼ­ »ç¿ëÇÏ´Â ½Ã½ºÅÛÄÝ¿¡ ´ëÇØ¼­ ¼³¸íÇϽÿÀ. 
                    </para> 
                </listitem> 
            </itemizedlist> 
        </para> 
    </section> 
</section> 
<section> 
    <title>·¹ÄÚµå ´ÜÀ§ÀÇ Àбâ¿Í ¾²±â</title> 
    <para> 
        <xref linkend="usedfile">ÀåÀÇ ÆÄÀÏ´Ù·ç±â´Â ÆÄÀÏÀ» ´Ù·ç´Â ±âº»ÀûÀÎ ±ÔÄ¢À»  
        ¾Ë·ÁÁÖ¾ú´Ù´Â Á¡¿¡¼­´Â ¾µ¸¸ÇÑ ³»¿ëÀ̱ä ÇÏÁö¸¸, ½ÇÁ¦ ¾ÖÇø®ÄÉÀ̼ǿ¡  
        Àû¿ë½ÃŰ±â¿¡´Â ºÎÁ·ÇÑ Á¡ÀÌ ÀÖ´Ù. 5ÀåÀÇ ¿¹´Â ±×³É ¹®ÀÚ¿­À» ´Ü¼øÇÏ°Ô ÀоîµéÀÌ´Â  
        Á¤µµ¿´Áö¸¸, ´ëºÎºÐÀÇ ÀÀ¿ë ¾ÖÇø®ÄÉÀ̼ÇÀº ÆÄÀÏ¿¡ ±¸Á¶È­µÈ µ¥ÀÌÅ͸¦ »ç¿ëÇÏ°Ô  
        µÈ´Ù. º¸Åë C¾ð¾î¿¡¼­ µ¥ÀÌÅ͸¦ ´Ù·ç±â À§Çؼ­ ÈçÈ÷ º¼ ¼ö ÀÖ´Â ±¸Á¶Ã¼ µ¥ÀÌÅ͸¦  
        ¿¬»óÇÏ¸é µÉ°ÍÀÌ´Ù.    
    </para> 
    <para> 
        ÀÌ·¯ÇÑ ±¸Á¶È­µÈ µ¥ÀÌÅÍ´Â ÄÄÇ»Åͻ󿡼­ È¿À²ÀûÀ¸·Î ´Ù·ê ¼ö ÀÖ´Ù.  
        ÀÌµé ±¸Á¶È­µÈ µ¥ÀÌÅÍ´Â µ¥ÀÌÅ͸¦ ·¹ÄÚµå ´ÜÀ§·Î ÀúÀåÇÏ°Ô µÇ´Âµ¥ °¢°¢ÀÇ  
        ·¹ÄÚµå´Â ¿©·¯°³ÀÇ Çʵå·Î ±¸¼ºÀ̵ȴÙ. ÇÁ·Î±×·¡¸Ó´Â °¢ ·¹ÄÚµåÀÇ Å©±â¸¦ ½±°Ô ¾ò¾î 
        ¿Ã ¼ö ÀÖÀ¸¹Ç·Î, ¿øÇÏ´Â µ¥ÀÌÅÍ¿¡ ºü¸£°Ô Á¢±ÙÇÒ ¼ö ÀÖ°Ô µÈ´Ù. 
    </para> 
    <para> 
        ÀÌ·¯ÇÑ ·¹ÄÚµå´Â µÎ°¡Áö Á¤µµ¸¦ »ý°¢ÇÒ ¼ö ÀÖÀ» °Í °°´Ù. Çϳª´Â ·¹ÄÚµåÀÇ  
        °¢ÇʵåÀÇ Å©±â°¡ °íÁ¤µÇ¾î ÀÖ´Â °íÁ¤±æÀ̸¦ °¡Áø ·¹ÄÚµåÀ̰í, ¶ÇÇϳª´Â ÇʵåÀÇ  
        Å©±â°¡ º¯µ¿µÇ´Â º¯µ¿·¹ÄÚµåÀÌ´Ù. °íÁ¤ ·¹Äڵ带 ´Ù·ç´Â ÇÁ·Î±×·¥Àº ´ëüÀûÀ¸·Î  
        °¡º±°í ºü¸£°Ô ÀÛµ¿ÇÒ ¼ö ÀÖÀ» »Ó¾Æ´Ï¶ó ÄÚµùÇϱ⵵ ½±´Ù¶ó´Â Á¡ ¶§¹®¿¡  
        ¾ÆÁÖ º¹ÀâÇÏÁö ¾ÊÀº ¾ÖÇø®ÄÉÀ̼ÇÀ» ÀÛ¼ºÇϱâ À§ÇÑ ¹æ¹ýÀ¸·Î ³Î¸® »ç¿ëµÇ°í ÀÖ´Ù.  
    </para> 
    <para> 
        ¹Ý¸é º¯µ¿±æÀÌ ·¹ÄÚµåÀÇ °æ¿ì¿¡´Â ´Ù¾çÇÑ µ¥ÀÌÅ͸¦ ´Ù·ç¾î¾ß ÇÏ´Â DB ÇÁ·Î±×·¥°ú  
        °°Àº Á»´õ °­·«ÇÑ ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé±â À§Çؼ­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¹°·Ð ±×¸¸Å­  
        ÇÁ·Î±×·¥ ÀÛ¼º½Ã »ý°¢ÇÒ ¿ä¼Ò°¡ ¸¹¾Æ Áú °ÍÀÌ´Ù.  
    </para> 
    <para> 
        À̹ø Àå¿¡¼­´Â °íÁ¤±æÀ̸¦ °¡Áø ·¹Äڵ带 ´Ù·ç´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ °ÍÀÌ´Ù.  
        ¿ì¸®°¡ ´Ù·ç´Â ·¹ÄÚµå´Â °³ÀÎÁ¤º¸¸¦ °¡Áö°Ô µÉ °ÍÀ̸ç, À̸¦ À§Çؼ­  
        ´ÙÀ½°ú °°Àº ÇʵåµéÀ» »ç¿ëÇÒ °ÍÀÌ´Ù.            
        <itemizedlist> 
            <listitem> 
                <para> 
                    ¼º - 8byte 
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    À̸§ - 16byte  
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    ÁÖ¼Ò - 240byte 
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    ³ªÀÌ - 4byte 
                </para> 
            </listitem> 
        </itemizedlist> 
        À§ÀÇ ÇʵåÁß ³ªÀ̸¦ Á¦¿ÜÇÑ ¸ðµç Çʵå´Â ¹®ÀÚ¿­ µ¥ÀÌÅͰ¡ µÈ´Ù. ³ªÀÌ´Â ¼ýÀÚ  
        À̹ǷΠ4byteÁ¤µµ¸¦ ÇÒ´çÇÏ´Â °ÍÀ¸·Î ÃæºÐ ÇÒ °ÍÀÌ´Ù. (¹°·Ð Àΰ£ÀÇ ÃÖ´ë ¼ö¸íÀÌ 
        120¼¼ Á¤µµ¶ó°í º¼ ¼ö ÀÖÀ¸¹Ç·Î 1byte¸¸ ÇÒ´çÇÏ´Â Á¤µµ·Îµµ ÃæºÐÇÒ °ÍÀÌ´Ù.  
        ±×·¯³ª ¿ì¼±Àº °£´ÜÇÏ°Ô 4byte·Î ÇϰڴÙ.)   
    </para> 
    <para> 
        Áö±Ý±îÁö ¿ì¸®°¡ ÀÛ¼ºÇÑ ¾î¼Àºí¸® ¿¹ÀçµéÀº ´ÜÁö ÇϳªÀÇ ÇÁ·Î±×·¥ ÆÄÀÏ·Î ÀÌ·ç¾îÁ® 
        ÀÖ¾úÀ¸³ª ¿©±â¿¡¼­´Â ¿©·¯°³ÀÇ ÆÄÀÏ·Î ºÐ¸®Çؼ­ ÀÛ¼ºÇϵµ·Ï ÇÒ°ÍÀÌ´Ù. C¿¡¼­ ÈçÈ÷ ¸»ÇÏ´Â 
        ¸ðµâº° ºÐÇÒ ÄÄÆÄÀÏÀ» À§ÇÔÀε¥, ÀÌ·¸°Ô ÇÏ¸é ±â´Éº°·Î ¼Ò½ºÄÚµå ÆÄÀÏÀ» À¯ÁöÇÒ ¼ö  
        ÀÖÀ¸¹Ç·Î ÇÁ·Î±×·¥ÀÇ À¯Áö/º¸¼ö°¡ ¼ö¿ùÇØ Áö´Â ÀåÁ¡À» °¡Áø´Ù. ÀÌ·¸°Ô ¸ðµâº°·Î ÇÁ·Î±×·¥À» 
        ³ª´©¾î¼­ À¯ÁöÇÒ°æ¿ì ÇÁ·Î±×·¥ Àü¿ª¿¡ °ÉÃļ­ »ç¿ëµÇ´Â °øÅëµÈ °ªµéÀ» À¯ÁöÇÒ Çʿ䰡  
        ÀÖ´Ù. C¿¡¼­´Â includeÆÄÀÏÀ» ÅëÇØ¼­ ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇϴµ¥, ¾î¼Àºí¸®¿ª½Ã ºñ½ÁÇÑ  
        ¹æ¹ýÀ» ÀÌ¿ëÇØ¼­ ¼±¾ð°ú Á¤ÀǸ¦ ºÐ¸®Çس¾ ¼ö ÀÖ´Ù.      
    </para> 
    <para> 
        ´ÙÀ½Àº ÇÁ·Î±×·¥¿¡¼­ »ç¿ëÇÒ À¯ÀúÁ¤º¸ ±¸Á¶Ã¼¸¦ À§ÇÑ ¼±¾ðÆÄÀÏ·Î record-def.s·Î  
        ÀúÀåÇϵµ·Ï ÇϰڴÙ. 
        <screen> 
.equ RECORD_FIRSTNAME,      0 
.equ RECORD_LASTNAME,          8  
.equ RECORD_ADDRESS,           24  
.equ RECORD_AGE,           264      
.equ RECORD_SIZE,          268 
        </screen> 
        ÀÌ¿Í ÇÔ²² ÇÁ·Î±×·¥ Àü¿ªÀûÀ¸·Î »ç¿ëµÉ °¢Á¾ »ó¼ö¸¦ Á¤ÀÇÇß´Ù. ÀÌµé »ó¼ö´Â  
        ½Ã½ºÅÛ ÄÝ ¹øÈ£¿Í Ç¥ÁØÀÔÃâ·Â°ú °°Àº °ªµéÀ» ¸í½ÃÇϵµ·Ï ÇÒ°ÍÀ̸ç, linux.s¿¡  
        ÀúÀåÇϵµ·Ï ÇϰڴÙ. 
        <screen> 
#System Call Numbers 
.equ SYS_EXIT, 1 
.equ SYS_READ, 3 
.equ SYS_WRITE, 4 
.equ SYS_OPEN, 5 
.equ SYS_CLOSE, 6 
.equ SYS_BRK, 45 
 
#System Call Interrupt Number 
.equ LINUX_SYSCALL, 0x80 #Standard File Descriptors 
.equ STDIN, 0  
.equ STDOUT, 1 
.equ STDERR, 2 
 
#Common Status Codes 
.equ END_OF_FILE, 0 
        </screen> 
    </para> 
    <para> 
        ÀÌÁ¦ ¿ì¸®´Â Á¤ÀÇµÈ ±¸Á¶Ã¼¸¦ ÀÌ¿ëÇØ¼­ 3°³ÀÇ ÇÁ·Î±×·¥À» ¸¸µéµµ·Ï ÇϰڴÙ. ù¹øÂ°  
        ÇÁ·Î±×·¥Àº ±¸Á¶Ã¼¸¦ ·¹ÄÚµå·ÎÇØ¼­ ÆÄÀÏ·Î ÀúÀåÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. µÎ¹øÂ° ÇÁ·Î±×·¥Àº  
        ÆÄÀÏÀÇ ·¹ÄÚµå ³»¿ëÀ» Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À̸ç, ¼¼¹øÂ° ÇÁ·Î±×·¥Àº ¸ðµç ·¹ÄÚµåÀÇ  
        ³ªÀ̸¦ ´õÇØ¼­ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. 
    </para> 
    <para> 
        À̵é ÇÁ·Î±×·¥Àº ±¸Á¶Ã¼¿Í ´õºÒ¾î ÇÁ·Î±×·¥À» °¡·ÎÁú·¯¼­ »ç¿ëµÇ´Â »ó¼ö¸¦ Á¤ÀÇÇ졒  
        ÀÖ´Â linux.s¸¦ Æ÷ÇÔÇÏ°Ô µÉ °ÍÀÌ´Ù.   
    </para> 
    <para> 
        ÀÌ·¯ÇÑ ÀÏÀ» ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé±â À§Çؼ­ ¿ì¸®´Â ÇÔ¼ö¸¦ ÀÛ¼ºÇÒ °ÍÀÌ´Ù. ÇÔ¼ö¸¦  
        ÀÛ¼ºÇϱâ À§Çؼ­ ÇÔ¼ö°¡ ¾î¶°ÇÑ ÀÎÀÚ¸¦ ÇÊ¿ä·Î ÇÒÁö¸¦ »ý°¢ÇØ º¸µµ·Ï ÇÏÀÚ.  
        <itemizedlist> 
            <listitem> 
                <para> 
                    ·¹ÄÚµåÀÇ ÀÐÀº µ¥ÀÌÅ͸¦ ÀúÀåÇϱâ À§ÇÑ ¹öÆÛÀÇ À§Ä¡ 
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    Àаųª ¾²±â À§ÇÑ ÆÄÀÏ ÁöÁ¤ÀÚ 
                </para> 
            </listitem> 
        </itemizedlist> 
    </para> 
    <para> 
        ´ÙÀ½Àº ÆÄÀÏ ÁöÁ¤ÀÚ·Î ºÎÅÍ Àбâ À§ÇÑ ÇÔ¼ö´Ù. 
        <screen> 
# ÇÏ´ÂÀÏ : ÀÌ ÇÔ¼ö´Â ÆÄÀÏ ÁöÁ¤ÀÚ·Î ºÎÅÍ ·¹Äڵ带 ÀÐ¾î µéÀδÙ.  
# ÀÔ  ·Â : ÆÄÀÏ ÁöÁ¤ÀÚ¿Í ¹öÆÛ  
# Ãâ  ·Â : ÇÔ¼ö´Â ¹öÆÛ¿¡ ·¹ÄÚµåÀÇ ³»¿ëÀ» ¾²°í »óŰªÀ» ¸®ÅÏÇÑ´Ù. 
 
# »ó¼ö¸¦ Á¤ÀÇÇÑ ÆÄÀϵéÀ» Æ÷ÇÔ ½ÃŲ´Ù. 
.include "record-def.s" 
.include "linux.s" 
 
# ½ºÅà Áö¿ª º¯¼ö 
.equ ST_READ_BUFFER,    8 
.equ ST_FILEDES,        12 
.section .text 
.globl read_record 
.type read_record, @function 
read_record: 
pushl %ebp 
movl  %esp, %ebp 
 
push %ebx 
movl ST_FILEDES(%ebp), %ebx 
movl ST_READ_BUFFER(%ebp), %ecx 
movl $RECORD_SIZE, %edx 
movl $SYS_READ, %eax 
int  $LINUX_SYSCALL 
 
# %eax´Â ¸®ÅÏ °ªÀ¸·Î, ÇÔ¼öÀÇ ½ÇÇà °á°ú¸¦ È£ÃâÇÑ ÇÁ·Î±×·¥¿¡°Ô  
# µÇµ¹·ÁÁÖ±â À§Çؼ­ »ç¿ëÇÑ´Ù. 
popl %ebx 
 
movl %ebp, %esp 
popl %ebp 
ret 
        </screen> 
        ÀÌ ÇÔ¼ö´Â ¸Å¿ì °£´ÜÇÏ´Ù. ÀÎÀÚ·Î ÁÖ¾îÁø ÆÄÀÏ ÁöÁ¤ÀÚ·Î ºÎÅÍ ·¹ÄÚµå Å©±â(RECORD_SIZE) 
        ¸¸Å­ÀÇ µ¥ÀÌÅ͸¦ ÀÐ¾î µéÀ̰í, ¹öÆÛ¿¡ ÀúÀåÇÏ´Â ÀÏÀ» ÇÑ´Ù.   
    </para> 
    <para> 
        ¹öÆÛÀÇ ³»¿ëÀ» ·¹Äڵ忡 ¾²´Â ÇÔ¼ö ¿ª½Ã °£´ÜÇÏ°Ô ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.  
        <screen> 
# ÇÏ´ÂÀÏ : ÆÄÀÏ ÁöÁ¤ÀÚ¿¡ ·¹Äڵ带 ¾´´Ù.  
# ÀÔ  ·Â : ÆÄÀÏÁöÁ¤ÀÚ¿Í ¹öÆÛ 
# Ãâ  ·Â : ÇÔ¼öÀÇ ½ÇÇà °á°ú  
.include "linux.s" 
.include "record-def.s" 
 
# ½ºÅà ·ÎÄà º¯¼ö 
.equ ST_WRITE_BUFFER, 8 
.equ ST_FILEDES, 12 
.section .text 
.globl write_record 
.type write_record, @fundtion 
 
write_record: 
pushl %ebp 
movl %esp, %ebp 
 
 
pushl %ebx 
movl $SYS_WRITE, %eax 
movl ST_FILEDES(%ebp), %ebx 
movl ST_WRITE_BUFFER(%ebp), %eax 
movl $RECORD_SIZE, %edx 
int  $LINUX_SYSCALL 
 
# %eax´Â ¸®ÅÏ °ªÀ¸·Î È£ÃâÇÑ ÇÁ·Î±×·¥¿¡°Ô ½ÇÇà °á°ú°ªÀ»  
# ³Ñ°ÜÁØ´Ù. 
popl %ebx 
 
movl %ebp, %esp 
popl %ebp 
ret 
        </screen> 
    </para> 
    <para> 
        À̰ɷΠ±âº»ÀûÀÎ ÇÔ¼ö¸¦ ¸¸µé¾úÀ¸¹Ç·Î ÀÌÁ¦ º»°ÝÀûÀ¸·Î ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ½Ã°£ÀÌ´Ù.  
    </para> 
    <section> 
        <title>·¹ÄÚµå ¾²±â</title> 
        <para> 
            ÀÌ ÇÁ·Î±×·¥Àº ·¹Äڵ带 ÆÄÀÏ¿¡ ¾²´Â ÇÁ·Î±×·¥Àε¥, °£´ÜÇÏ°Ô ÀÛ¼ºÇϱâ À§Çؼ­  
            ·¹ÄÚµåÀÇ ÇÊµå °ªÀº ÇϵåÄÚµù Çϵµ·Ï ÇϰڴÙ.  
        </para> 
        <para> 
            <screen>     
.include "linux.s" 
.include "record-def.s" 
 
.section .data 
 
record1: 
.ascii "yun\0" 
.rept  4    #padding  
.byte  0 
.endr 
 
.ascii "dream\0" 
.rept  10  
.byte  0 
.endr 
 
.ascii "Seoul city Chun-dam dong\0"  
.rept   215 
.byte   0 
.endr 
 
.long 25 
 
record2: 
.ascii "yun\0"  
.rept  4 
.byte  0 
.endr 
 
.ascii "mung\0" 
.rept  11 
.byte  0  
.endr 
.ascii "Seoul city joinc dong\0" 
.rept  218 
.byte  0 
.endr 
 
.long 27 
 
file_name: 
.ascii "test.dat\0" 
.equ ST_FILE_DESCRIPTOR, -4 
.globl _start 
 
 
_start: 
movl %esp, %ebp 
subl $4, %esp 
 
movl $SYS_OPEN, %eax 
movl $file_name, %ebx 
movl $0101, %ecx 
movl $0666, %edx 
int   $LINUX_SYSCALL 
 
movl %eax, ST_FILE_DESCRIPTOR(%ebp) 
 
pushl ST_FILE_DESCRIPTOR(%ebp) 
pushl $record1 
call  write_record 
addl  $8, %esp 
 
pushl ST_FILE_DESCRIPTOR(%ebp) 
pushl $record2 
call  write_record 
addl  $8, %esp 
 
movl $SYS_CLOSE, %eax 
movl ST_FILE_DESCRIPTOR(%ebp), %ebx 
int  $LINUX_SYSCALL 
 
movl $SYS_EXIT, %eax 
movl $0, %ebx  
int  $LINUX_SYSCALL 
            </screen> 
        </para> 
        <para> 
            ÀÌ ÇÁ·Î±×·¥Àº ¸Å¿ì °£´ÜÇÏ´Ù. ´ÜÁö ¸î°³ÀÇ »ó¼öµéÀÌ »ç¿ëµÇ¾úÀ¸¸ç, .data ¼½¼Ç¿¡  
            ÀúÀåÇØ¾ßµÉ ·¹Äڵ尡 ÀÖ´Â °Í¿ÜÀÇ ´Ù¸¥ °Íµé(Àбâ/¾²±â)´Â ÀÌ¹Ì ´Ù·é ÀûÀÌ ÀÖ´Â  
            ³»¿ëµéÀÌ´Ù.  
        </para> 
        <para> 
            ÇÁ·Î±×·¥ÀÇ °¡Àå óÀ½¿¡´Â »ó¼ö°¡ ¼±¾ðµÈ ÆÄÀÏÀ» Æ÷ÇÔ(include)½ÃŰ´Â  
            Äڵ尡 µé¾î°¬´Ù.  
            <screen> 
.include "linux.s" 
.include "record-def.s" 
            </screen> 
            C¾ð¾î¸¦ ÇØºÃ´Ù¸é ±»ÀÌ ¼³¸íÇÒ ÇÊ¿ä ¾ø´Â ÄÚµå·Î, ÇÁ·Î±×·¥ Àü¿ªÀûÀ¸·Î »ç¿ëµÇ¾î¾ß ÇÒ  
            »ó¼ö³ª ÇÔ¼öµéÀ» º°µµÀÇ ÆÄÀÏ¿¡ ¼±¾ðÇØ ³õ°í À̸¦ »ç¿ëÇϱâ À§ÇÑ ¸ñÀûÀ¸·Î »ç¿ëÇÑ´Ù. 
        </para> 
        <para> 
            ´ÙÀ½ ·¹ÄÚµåÀÇ °ªÀ» Á¤ÀÇ ÇÏ´Â ºÎºÐÀÌ ³ª¿À´Âµ¥ ¿©±â¿¡¼­ .rept¶ó´Â  
            »õ·Î¿î Áö½Ã¾î¸¦ ¸¸³ª°Ô µÈ´Ù. ÀÌ Áö½Ã¾î´Â .endr Áö½Ã¾î¿Í ÇÔ²² »ç¿ëµÇ´Âµ¥,  
            .rept¿¡¼­ ÁöÁ¤µÈ ¼ýÀÚ ¸¸Å­ Áß°£¿¡ ¿À´Â °ªÀ¸·Î ä¿ì´Â ÀÏÀ» ÇÑ´Ù. À§ Äڵ忡¼­´Â  
            ¹®ÀÚ¿­ ÇʵåÀÇ ³ª¸ÓÁö ºÎºÐÀ» '\0'À¸·Î ä¿ì±â À§ÇÑ ¸ñÀûÀ¸·Î »ç¿ëÇϰí ÀÖ´Ù.  
            C¿¡¼­ ¸Þ¸ð¸® ¿µ¿ªÀ» ƯÁ¤ °ªÀ¸·Î ä¿ì±â À§Çؼ­ »ç¿ëÇÏ´Â memset(2)°ú ºñ½ÁÇÑ ¿ëµµ·Î  
            »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.     
        </para> 
        <para> 
            ÀÌÁ¦ ÄÄÆÄÀϰú ¸µÅ© °úÁ¤À» °ÅÃļ­ ½ÇÇà ÆÄÀÏÀ» ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ.   
            <screen> 
# as write-records.s -o write-records.o 
# as write.s -o write.o 
# ld write-records.o write.o -o write-records 
            </screen> 
            ¿ì¸®°¡ ¸¸µç ÇÁ·Î±×·¥Àº 2°³ÀÇ ÆÄÀÏ·Î ³ª´µ¾îÁ® ÀÖ´Ù. ±×·¯¹Ç·Î À̵éÀ» Çϳª·Î  
            ¹­¾îÁÖ´Â(link)°úÁ¤ÀÌ ÇÊ¿äÇÏ°Ô µÈ´Ù. ¸µÅ©´Â ld linker¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù. ¸¸µé¾îÁø  
            ½ÇÇàÆÄÀÏÀº ´ÙÀ½°ú °°ÀÌ ½ÇÇà ½Ãų ¼ö ÀÖ´Ù.     
            <screen> 
# ./write-records 
            </screen> 
            ½ÇÇàµÇ°í ³ª¸é test.dat¶ó´Â ÆÄÀÏÀÌ ¸¸µé¾î Áø´Ù. ÀÌ ÆÄÀÏÀ» vi¿¡µðÅÍ·Î È®ÀÌÇØ º¸¸é  
            ÀÏ¹Ý ÅØ½ºÆ® ÆÄÀϰú´Â Á» ´Ù¸£°Ô Ãâ·ÂµÉ °ÍÀÌ´Ù. ÀÌÀ¯´Â NULL°ú °°Àº Ãâ·ÂµÉ ¼ö ¾ø´Â  
            ¹®ÀÚµéÀÌ Æ÷ÇԵǾî Àֱ⠶§¹®ÀÌ´Ù. ¾î¶µç ·¹Äڵ带 ¼º°øÀûÀ¸·Î ½èÀ¸´Ï, ÀÌÁ¦  
            ·¹ÄÚµå·Î ºÎÅÍ ÀоîµéÀÌ´Â ÇÁ·Î±×·¥À» ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ.   
        </para> 
    </section> 
    <section> 
        <title>·¹ÄÚµå Àбâ</title> 
        <para> 
            ¿©±â¿¡¼­´Â ÀúÀåµÈ ·¹ÄÚµå·Î ºÎÅÍ À̸§, ÁÖ¼Ò, ³ªÀ̸¦ Àоî¿Í¼­ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À» 
            ¸¸µé¾î º¸µµ·Ï ÇϰڴÙ.      
        </para> 
        <para> 
            ¿ì¸®°¡ Ãâ·ÂÇϰíÀÚ ÇÏ´Â ·¹ÄÚµåÀÇ ÇʵåÁß À̸§°ú ÁÖ¼Ò´Â °íÁ¤µÈ ±æÀ̸¦ °¡Áö°í ÀÖÁö  
            ¾Ê´Ù. ±×·¯¹Ç·Î ¸î°³ÀÇ ¹®ÀÚ¸¦ ½á¾ßÇÏ´ÂÁö¸¦ °è¼öÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ´ÙÇàÈ÷µµ ¿ì¸®´Â  
            ·¹Äڵ带 ÀûÀ» ¶§, ÇʵåÀÇ ³¡À» '\0'·Î Æ÷¸ËÇßÀ½À¸·Î, '\0'À» ¸¸³¯¶§±îÁö ÀоîµéÀÎ  
            ¹®ÀÚ¸¸ °è¼öÇÏ¸é µÈ´Ù. °¡Á¤ ¸ÕÀú ¹®ÀÚÀÇ °¹¼ö¸¦ °è¼öÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé¾î  
            º¸µµ·Ï ÇϰڴÙ. ÀÌ ÇÁ·Î±×·¥ÀÇ À̸§Àº count-chars.s·Î ÇϰڴÙ.      
            <screen> 
# ¸ñ    Àû : null byte¸¦ ¸¸³¯ ¶§±îÁö ¹®ÀÚÀÇ °¹¼ö¸¦ °Ë»çÇÑ´Ù. 
# ÀÔ    ·Â : ¹®ÀÚ¿­ÀÇ ÁÖ¼Ò   
# Ãâ    ·Â : ¹®ÀÚ¿­ÀÇ °¹¼ö¸¦ %eax·Î  
# ÇÁ·Î¼¼½º : 
#   %ecx  -  ¹®ÀÚ Ä«¿îÆ® 
#   %al   -  ÇöÀç ¹®ÀÚ 
#   %edx  -  ÇöÀç ¹®ÀÚ ÁÖ¼Ò  
 
.include "linux.s" 
.include "record-def.s" 
 
.type count_chars, @function 
.globl count_chars 
 
# ù¹øÂ° ÀÎÀÚ°¡ µé¾î ÀÖ´Â ½ºÅà  
.equ ST_STRING_START_ADDRESS, 8 
 
count_chars: 
pushl %ebp 
movl  %esp, %ebp 
 
# 0ºÎÅÍ Ä«¿îÆ®¸¦ ½ÃÀÛÇÑ´Ù. 
movl $0, %ecx 
movl ST_STRING_START_ADDRESS(%ebp), %edx 
 
count_loop_begin: 
# ÃÖ±Ù ¹®ÀÚ¸¦ °¡Á®¿Â´Ù. 
movb (%edx), %al  
 
# nullÀÎÁö °Ë»çÇÑ´Ù. 
cmpb $0, %al 
# ¸¸¾à nullÀ̶ó¸é ·çÇÁ¸¦ ³¡³½´Ù. 
je count_loop_end 
 
# ³ÎÀÌ ¾Æ´Ï¶ó¸é Æ÷ÀÎÅÍ¿Í Ä«¿îÆ®¸¦ 1¾¿ Áõ°¡ ½ÃŲ´Ù.  
incl %ecx 
incl %edx 
 
# ·çÇÁÀÇ Ã³À½À¸·Î µÇµ¹¾Æ °£´Ù. 
jmp  count_loop_begin 
 
count_loop_end: 
# Ä«¿îÆ® °á°ú¸¦ %eax·Î º¹»çÇÑ´Ù.   
movl %ecx, %eax 
 
popl %ebp 
ret 
            </screen> 
            ÀÌÇØÇϱ⿡ º° ¾î·Á¿î Á¡ÀÌ ¾ø´Â °£´ÜÇÑ ÄÚµå´Ù. ÀÌ ÄÚµå´Â µ¥ÀÌŸ ÁÖ¼Ò·Î ºÎÅÍ  
            1¹ÙÀÌÆ®¾¿ ÀÐ¾î ³ª°¡¸é¼­ +1À» ÇÑ´Ù. ¸¸¾à ÀÐÀº ¹ÙÀÌÆ®°¡ '\0'À̶ó¸é Áö±Ý±îÁö °è¼öÇÑ 
            ¼ö¸¦ ¸®ÅÏÇÑ´Ù. 
        </para> 
        <para> 
            ÀÌÁ¦ ½ÇÁ¦ ÆÄÀÏ·Î ºÎÅÍ ·¹Äڵ带 ÀоîµéÀÌ´Â Äڵ带 ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ.  
            ÀÌ ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº È帧À» °¡Áú °ÍÀÌ´Ù.   
            <itemizedlist> 
                <listitem> 
                    <para> 
                        ÆÄÀÏÀ» ¿¬´Ù 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        ·¹Äڵ带 Àд´Ù. 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        À̸§ ¹®ÀÚ¿­ÀÇ Å©±â¸¦ °è¼öÇÑ´Ù.  
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        À̸§À» Ç¥ÁØ Ãâ·ÂÇÑ´Ù. 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        °³Ç๮ÀÚ¸¦ Ãâ·ÂÇÑ´Ù.     
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        ´Ù¸¥ ·¹Äڵ带 Àд´Ù.     
                    </para> 
                </listitem> 
            </itemizedlist> 
        </para> 
        <para> 
            ÀÌÁ¦ ¿ì¸®´Â °³Ç๮ÀÚ¸¦ Ãâ·ÂÇÏ´Â °£´ÜÇÑ ÇÁ·Î±×·¥À» ¸¸µé °ÍÀÌ´Ù. À̰ÍÀº  
            °¢ ÇʵåÀÇ °ªÀ» Ãâ·ÂÇÑ ÈÄ Çʵ带 ±¸ºÐÇØ¼­ º¸±â ÁÁ°Ô ¸¸µé±â À§ÇÑ ¸ñÀûÀ¸·Î »ç¿ëÇÑ´Ù.  
            ÇÁ·Î±×·¥ÀÇ À̸§Àº read-records.s·Î ÇϰڴÙ. 
            <screen> 
.include "linux.s" 
.globl write_newline 
.type write_newline, @function 
.section .data 
 
newline: 
.ascii "\n" 
.section .text 
.equ ST_FILEDES, 8 
 
write_newline: 
pushl %ebp 
movl  %esp, %ebp 
 
movl $SYS_WRITE, %eax 
movl ST_FILEDES(%ebp), %ebx 
movl $newline, %ecx 
movl $1, %edx 
int  $LINUX_SYSCALL 
movl %ebp, %esp  
popl %ebp 
ret 
            </screen> 
        </para> 
        <para> 
            ÀÌÁ¦ ½ÇÁ¦ ·¹ÄÚµå·Î ºÎÅÍ µ¥ÀÌÅ͸¦ Àоî¿À´Â ¸ÞÀÎÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù. ÇÁ·Î±×·¥ÀÇ  
            À̸§Àº read-records.s·Î ÇϰڴÙ. 
            <screen> 
.include "linux.s" 
.include "record-def.s" 
 
.section .data 
 
file_name: 
.ascii "test.dat\0" 
 
.section .bss 
.lcomm record_buffer, RECORD_SIZE 
 
.section .text 
 
# Main ÇÁ·Î±×·¥  
.globl _start 
 
_start: 
# ÀԷ°ú Ãâ·ÂÀ» À§ÇÑ ÆÄÀÏÁöÁ¤ÀÚÀÇ ½ºÅÃÀ§Ä¡¸¦  
# °è»ê 
.equ ST_INPUT_DESCRIPTOR, -4 
.equ ST_OUTPUT_DESCRIPTOR, -8 
 
# ½ºÅà Æ÷ÀÎÅ͸¦ %ebp·Î º¹»çÇÑ´Ù. 
movl %esp, %ebp 
# ÆÄÀÏÁöÁ¤ÀÚ¸¦ À§ÇÑ °ø°£À» ÇÒ´çÇÑ´Ù. 
subl $8, %esp 
 
# ÆÄÀÏÀ» ¿¬´Ù. 
movl $SYS_OPEN, %eax 
movl $file_name, %ebx 
movl $0, %ecx        # Àбâ Àü¿ëÀ¸·Î ¿¬´Ù. 
movl $0666, %edx 
int  $LINUX_SYSCALL 
 
# ÀÔ·ÂÀ» À§ÇÑ ÆÄÀÏ ÁöÁ¤ÀÚ¸¦ ÀúÀåÇÑ´Ù. 
movl %eax, ST_INPUT_DESCRIPTOR(%ebp) 
 
# Ç¥ÁØ Ãâ·Â(1)À» À§ÇÑ ÆÄÀÏÁöÁ¤ÀÚ¸¦ ÀúÀåÇÑ´Ù.  
movl $STDOUT, ST_OUTPUT_DESCRIPTOR(%ebp) 
 
record_read_loop:   
pushl ST_INPUT_DESCRIPTOR(%ebp) 
pushl $record_buffer 
call  read_record  
addl  $8, %esp 
 
# ÀоîµéÀÎ µ¥ÀÌÅÍÀÇ ±æÀ̰¡   
# ·¹ÄÚµå Å©±â¿Í °°ÀºÁö È®ÀÎÇÑ´Ù.  
# ·¹ÄÚµå Å©±â¿Í ´Ù¸£´Ù¸é ·çÇÁ¸¦ ¹þ¾î³­´Ù.  
cmpl  $RECORD_SIZE, %eax 
jne   finished_reading 
 
# ±×·¸Áö ¾Ê´Ù¸é ·¹ÄÚµåÀÇ À̸§À» Ãâ·ÂÇÑ´Ù.  
# À̸§À» Ãâ·ÂÇϱâ À§Çؼ­´Â ¹®ÀÚ¿­ÀÇ Å©±â¸¦  
# Àоî¿Í¾ß ÇÑ´Ù. 
pushl $RECORD_FIRSTNAME + record_buffer 
call  count_chars 
addl  $4, %esp 
 
movl  %eax, %edx 
movl  ST_OUTPUT_DESCRIPTOR(%ebp), %ebx 
movl  $SYS_WRITE, %eax 
movl  $3, %ecx 
int   $LINUX_SYSCALL 
ret 
 
pushl ST_OUTPUT_DESCRIPTOR(%ebp) 
call  write_newline 
addl  $4, %esp 
 
jmp   record_read_loop 
 
finished_reading: 
movl $SYS_EXIT, %eax 
movl $0, %ebx 
int  $LINUX_SYSCALL 
            </screen> 
        </para> 
        <para> 
            ÀÌÁ¦ Áö±Ý±îÁöÀÇ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÏ°í ¸µÅ©Çؼ­ ½ÇÇà°¡´ÉÇÑ ÆÄÀÏ·Î ¸¸µé¾î º¸ÀÚ. 
            <screen> 
# as count-chars.s -o count-chars.o 
# as write-newline.s -o write-newline.o  
# as read-records.s -o read-records.o 
# as read.s -o read.o 
# ld read.o read-records.o write-newline.o count-chars.o -o read-records 
            </screen> 
            ÇÁ·Î±×·¥Àº ./read-records ·Î ½ÇÇà½Ãų ¼ö ÀÖ´Ù.  
        </para> 
    </section> 
    <section id="addyear"> 
        <title>·¹ÄÚµå ¼öÁ¤</title> 
        <para> 
            ÀÌ ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº Äڵ念¿ªÀ» °¡Áø´Ù. 
            <itemizedlist> 
                <listitem> 
                    <para> 
                        ÀÔ·ÂÆÄÀϰú Ãâ·ÂÆÄÀÏÀ» ¿¬´Ù. 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        ÀÔ·ÂÆÄÀÏ·Î ºÎÅÍ ·¹Äڵ带 Àд´Ù. 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        ³ªÀ̸¦ Áõ°¡ ½ÃŲ´Ù. 
                    </para> 
                </listitem> 
                <listitem> 
                    <para> 
                        Ãâ·ÂÆÄÀÏ¿¡ ¾´´Ù. 
                    </para> 
                </listitem> 
            </itemizedlist> 
        </para> 
        <para> 
            ´ÙÀ½Àº ·¹ÄÚµåÀÇ °ªÀ» ¼öÁ¤Çؼ­ ´Ù¸¥ ÆÄÀÏ·Î ÀúÀåÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. ÇÁ·Î±×·¥ÀÇ  
            À̸§Àº add-year.s·Î ÇϰڴÙ. 
            <screen> 
.include "linux.s" 
.include "record-def.s" 
 
.section .data 
input_file_name: 
.ascii "test.dat\0" 
 
output_file_name: 
.ascii "testout.dat\0" 
 
.section .bss 
.lcomm record_buffer, RECORD_SIZE 
 
.equ ST_INPUT_DESCRIPTOR, -4 
.equ ST_OUTPUT_DESCRIPTOR, -8 
 
 
.section .text 
.globl _start 
 
 
_start: 
movl %esp, %ebp 
subl $8, %esp  
 
movl $SYS_OPEN, %eax 
movl $input_file_name, %ebx 
movl $0, %ecx 
movl $0666, %edx 
int  $LINUX_SYSCALL 
 
movl %eax, ST_INPUT_DESCRIPTOR(%ebp) 
 
# ¾²±â À§Çؼ­ ÆÄÀÏ ¿­±â 
movl  $SYS_OPEN, %eax 
movl  $output_file_name, %ebx 
movl  $0101, %ecx 
movl  $0666, %edx 
int   $LINUX_SYSCALL 
 
movl  %eax, ST_OUTPUT_DESCRIPTOR(%ebp) 
 
 
loop_begin: 
pushl ST_INPUT_DESCRIPTOR(%ebp)  
pushl $record_buffer 
call  read_record  
addl  $8, %esp 
 
# read·Î ºÎÅÍÀÇ ¸®Åϰª°ú ·¹ÄÚµåÅ©±â¸¦ ºñ±³ÇÑ´Ù. 
# ¸¸¾à ·¹ÄÚµå Å©±â¿Í °°Áö ¾Ê´Ù¸é ·çÇÁ¸¦ Á¾·áÇÑ´Ù.  
cmpl  $RECORD_SIZE, %eax 
jne   loop_end 
 
# ³ªÀ̸¦ Áõ°¡½ÃŲ´Ù. 
incl  record_buffer + RECORD_AGE 
 
pushl ST_OUTPUT_DESCRIPTOR(%ebp) 
push  $record_buffer 
call  write_record 
addl  $8, %esp 
 
jmp   loop_begin 
 
loop_end: 
movl  $SYS_EXIT, %eax 
movl  $0, %ebx 
int   $LINUX_SYSCALL 
            </screen> 
        </para> 
        <para> 
            ÄÚµùÀ» ¸¶ÃÆ´Ù¸é ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ½ÇÇàÆÄÀÏÀ» »ý¼ºÇϵµ·Ï ÇÏÀÚ.  
            <screen> 
# as add-year.s -o add-year.o 
# ld add-year.o read.o write.o -o add-year 
            </screen> 
            ÀÌ ÇÁ·Î±×·¥À» ./add-year·Î ½ÇÇà½Ãų ¼ö ÀÖ´Ù. ½ÇÇà½ÃŰ°í ³ª¸é testout.dat¶ó´Â  
            ÆÄÀÏÀÌ »ý¼ºµÈ°É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.  
        </para> 
        <para> 
            Áö±Ý±îÁöÀÇ ³»¿ëÀ» ÅëÇØ¼­ ¿ì¸®´Â °íÁ¤µÈ ±æÀÌÀÇ ·¹Äڵ带 Á¦¾îÇÏ´Â ÇÁ·Î±×·¥Àº  
            °£´ÜÇÏ°Ô ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ¹è¿ü´Ù. ´ÜÁö ÁöÁ¤µÈ Å©±â¸¸Å­ µ¥ÀÌÅ͸¦ Àо  
            ¹öÆÛ¿¡ ½×°í, ÀÌ·± Àú·± ÀÛ¾÷À» ÇØ¼­ Ãâ·ÂÇϱ⸸ ÇÏ¸é µÈ´Ù.   
        </para> 
    </section> 
    <section> 
        <title>¸¶Ä¡¸ç</title> 
        <section> 
            <title>º¹½À</title> 
            <para> 
                <itemizedlist> 
                    <listitem> 
                        <para> 
                            ·¹ÄÚµå¶õ ¹«¾ùÀΰ¡ ? 
                        </para> 
                    </listitem> 
                    <listitem> 
                        <para> 
                            °íÁ¤µÈ ±æÀ̸¦ °¡Áø ·¹Äڵ尡 ±×·¸Áö ¾ÊÀº ·¹Äڵ忡 ´ëÇØ¼­  
                            ¾òÀ» ¼ö ÀÖ´Â ÀåÁ¡Àº ¹«¾ùÀΰ¡. 
                        </para> 
                    </listitem> 
                    <listitem> 
                        <para> 
                            ¿©·¯°³ÀÇ ÆÄÀÏ·Î ºÐ¸®µÈ ¾î¼Àºí¸® ¼Ò½º¿¡¼­ »ó¼ö¸¦ Æ÷ÇÔ½ÃŰ´Â  
                            ¹æ¹ý¿¡ ´ëÇØ¼­ ¼³¸íÇϽÿÀ. 
                        </para> 
                    </listitem> 
                    <listitem> 
                        <para> 
                            ¿Ö ¿©·¯°³ÀÇ ÇÁ·Î±×·¥ ÆÄÀÏ·Î ³ª´©¾î¼­ ÇÁ·Î±×·¥À» ÀÛ¼ºÇϴ°¡. 
                        </para> 
                    </listitem> 
                    <listitem> 
                        <para> 
                            record_buffer + RECORD_AGE °¡ ÀǹÌÇÏ´Â ¹Ù¸¦ ¼³¸íÇϽÿÀ.  
                            ¿Ö ¾îµå·¡½º ¸ðµå¸¦ »ç¿ëÇϰí Àִ°¡ ? 
                        </para> 
                    </listitem> 
                </itemizedlist> 
            </para> 
        </section> 
        <section> 
            <title>¿¬½À¹®Á¦</title> 
            <para> 
                <itemizedlist> 
                    <listitem> 
                        <para> 
                        ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀÎÀÚ·Î ÆÄÀÏÀ̸§À» ¹Þµµ·Ï ¿¹Á¦  
                        ÇÁ·Î±×·¥µéÀ» ¼öÁ¤ÇØ º¸ÀÚ.     
                        </para> 
                    </listitem> 
                    <listitem> 
                        <para> 
                            lseek(2) ½Ã½ºÅÛ È£Ãâ¿¡ ´ëÇØ¼­ ¿¬±¸ÇØ º¸µµ·ÏÇÏÀÚ. lseek¸¦  
                            ÀÌ¿ëÇØ¼­ ÀÐÀº ÆÄÀÏÀÇ ³ªÀ̸¦ ¼öÁ¤ÇÑ ÈÄ ´Ù½Ã ÀúÀåÇϵµ·Ï  
                            add-year ÇÁ·Î±×·¥À» ¼öÁ¤Çغ¸ÀÚ. 
                        </para> 
                    </listitem> 
                    <listitem> 
                        <para> 
                            Űº¸µå·ÎºÎÅÍ ·¹ÄÚµå °ªÀ» ÀԷ¹޾Ƽ­ ÆÄÀÏ·Î ¾²´Â ÇÁ·Î±×·¥À»  
                            ¸¸µé¾î º¸µµ·Ï ÇÑ´Ù.  
                        </para> 
                    </listitem> 
                </itemizedlist> 
            </para> 
        </section> 
    </section> 
</section> 
<section> 
    <title>°ß°íÇÑ ÇÁ·Î±×·¥ ÀÛ¼ºÇϱâ</title> 
    <para> 
        À̹øÀå¿¡¼­´Â °ß°íÇÑ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.  
        °ß°íÇÑ ÇÁ·Î±×·¥À̶õ ¾î¶°ÇÑ ¹®Á¦µµ ¹ß»ý½ÃŰÁö ¾Ê´Â ÇÁ·Î±×·¥ÀÌ ¾Æ´Ï´Ù.  
        ¹°·Ð °¡´ÉÇÑ ¹®Á¦¸¦ ¹ß»ý½ÃŰÁö ¾Êµµ·Ï ¸¸µé¾î¾ß °ÚÁö¸¸, ¹®Á¦ ¹ß»ý½Ã À̸¦  
        ±ò²ûÇÏ°Ô Ã³¸®Çؼ­ ½É°¢ÇÑ ¹®Á¦·Î °¡Áö ¾Êµµ·Ï ÇÏ´Â ÇÁ·Î±×·¥À» ¸»ÇÑ´Ù.  
        ¹®Á¦ÀÇ Ã³¸®¸¦ À§Çؼ­´Â ¿¡·¯Äڵ带 Á¦´ë·Î °Ë»çÇÏ´Â ÇÁ·Î±×·¥ÀÇ ÀÛ¼ºÀÌ ÇÊ¿äÇÏ´Ù. 
    </para> 
    <section> 
        <title>¿Ö ½Ã°£ÀÌ Áö¿¬µÇ´Â°¡ ?</title> 
        <para> 
            ÇÁ·Î±×·¡¸ÓÀÇ °øÅëµÈ ÀÇ°ß Áß Çϳª´Â ¾ðÁ¦³ª ½Ã°£ ºÎÁ·¿¡ ½Ã´Þ¸°´Ù´Â Á¡ÀÌ´Ù.  
            ÀÌ·¯ÇÑ »ç½ÇÀ» Àß ¾Ë°í ÀÖ´Â (°æÇèÀÖ´Â) ÇÁ·Î±×·¡¸ÓµéÀº ÇÁ·ÎÁ§Æ® ±â°£À»  
            »êÁ¤Çϴµ¥ À־ ÀÚ½ÅÀÌ ¿¹»óÇÏ´Â ½Ã°£ÀÇ 2¹è ±æ°Ô´Â 4¹è±îÁö¸¦ Àâ´Â´Ù.  
            ±×·¯³ª ±×·³¿¡µµ ºÒ±¸ÇÏ°í ¿©ÀüÈ÷ ½Ã°£Àº ºÎÁ·ÇÏ´Ù. ÀÌ·¯ÇÑ ¹®Á¦°¡ ¹ß»ýÇÏ´Â  
            ¿øÀÎÀº ´ÙÀ½°ú °°´Ù. 
        </para>     
        <para>     
            <itemizedlist> 
            <listitem> 
                <para> 
                    ÇÁ·ÎÁ§Æ® ÄÚµå¿Í °ü·ÃµÇÁö ¾Ê´Â ¹ÌÆÃ°ú ¸ðÀÓ, ´Ù¸¥ (Æ´Æ´ÀÌ ¹ß»ýÇÏ´Â)  
                    ¾÷¹«µéÀÌ ¹ß»ýÇÏ°í ¿©±â¿¡ ½Ã°£À» »©¾Ñ±ä´Ù. 
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    ÇÁ·Î±×·¡¸Ó´Â Á¾Á¾ ÇÁ·ÎÁ§Æ®¿¡ ´ëÇÑ ÀÌÇØ°¡ ºÎÁ·ÇÑ »óÅ¿¡¼­(¹°·Ð ÀÚ½ÅÀº 
                    ¿ÏÀüÈ÷ ÀÌÇØÇß´Ù°í »ý°¢À» ÇÏÁö¸¸) ÇÁ·ÎÁ§Æ®¸¦ ½ÇÇàÇÑ´Ù. 
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    ÇÁ·Î±×·¡¸Ó°¡ ¸¸µé¾î¾ß ÇÏ´Â Á¦Ç°ÀÇ ¸ðµç Á¦¹Ý»çÇ×À» ÀÌÇØÇÒ ¼ö ÀÖ´Â°Ç ¾Æ´Ï´Ù.  
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    ÇÁ·Î±×·¡¸Ó´Â Á¾Á¾ ÀÌÀü¿¡ ¼öÇàÇß´ø ºñ½ÁÇÑ Á¾·ùÀÇ ÇÁ·ÎÁ§Æ®¸¦ °æÇè»ï¾Æ¼­  
                    Áö±Ý ¼öÇàÇÏ´Â ÇÁ·ÎÁ§Æ®¿¡ ´ëÇÑ ½Ã°£À» »êÃâÇÑ´Ù(º¸Åë ´õ ª°Ô).  
                    ±×·¯³ª ¼öÇàÇÏ´Ù º¸¸é ÀÌÀü ÇÁ·ÎÁ§Æ®¿Í Áö±Ý ÇÁ·ÎÁ§Æ®´Â ÀüÇô º°°³¶ó´Â °ÍÀ»  
                    µÚ´Ê°Ô ±ú´Ý°Ô µÈ´Ù. 
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    ÇÁ·Î±×·¡¸Ó´Â ½Ã°£À» ±â°£À» °è»êÇÒ ¶§ ÇÁ·Î±×·¥ ¾ÈÁ¤È­¿Í °ü·ÃµÈ ºÎºÐÀ» »©°í  
                    ½Ã°£À» °è»êÇÑ´Ù. ÇÁ·ÎÁ§Æ® ±â°£À» ÃʰúÇßÀ» ¶§ "¿¹Àü¿¡ ¸»ÇÑ ÇÁ·ÎÁ§Æ® ½Ã°£Àº  
                    ¾ÈÁ¤È­(µð¹ö±ë¹× Å×½ºÆ®)¿Í °ü·ÃµÈ ºÎºÐÀº Á¦¿ÜÇÑ °Ì´Ï´Ù."¶ó°í ÇÁ·ÎÁ§Æ® Áö¿¬À»  
                    Ã¥¸ÁÇÏ´Â °ü¸®ÀÚ¿¡°Ô Áö¿¬ÀÌÀ¯¸¦ ¼³¸íÇÏ´Â ¸ð½ÀÀ» ÈçÈ÷ º¼ ¼ö ÀÖ´Ù.   
                </para> 
                <para> 
                    ¸·»ó ÇÁ·ÎÁ§Æ® Á¾¹Ý¿¡ ´Ù´Ù¸£¸é µð¹ö±ë°ú Å×½ºÆ®¿¡ »ó´çÈ÷ ¸¹Àº ½Ã°£ÀÌ ¼Ò¿äµÈ´Ù´Â  
                    °ÍÀ» ¾Ë°ÔµÈ´Ù - »ç½Ç ´©±¸³ª ´Ù ¾ËÁö¸¸ ¸·»ó ÇÁ·ÎÁ§Æ®°¡ ´ÚÄ¡¸é ¹«½ÃÇÏ´Â °æ¿ì°¡ ¸¹´Ù -. 
                </para> 
            </listitem> 
            </itemizedlist> 
            ÀÌ·¯ÇÑ Áö¿¬¿ä¼Ò Áß ¸¶Áö¸· ¿ä¼ÒÀÎ "°ß°íÇÑ ÇÁ·Î±×·¥ ÀÛ¼º"¿¡ °ü·ÃµÈ ³»¿ëÀ» ´Ù·ê °ÍÀÌ´Ù.  
            ÇÁ·Î±×·¥ ÀÛ¼º½Ã¿¡ °ß°íÇÑ (¹æ½ÄÀÇ)ÄÚµùÀ» ÇÑ´Ù¸é ³ªÁß¿¡ µð¹ö±ë°ú Å×½ºÆ® ½Ã°£À» »ó´çÈ÷  
            ÁÙÀÏ ¼ö ÀÖÀ» »Ó´õ·¯, Áú ÁÁÀº Á¦Ç°À» ¸¸µé¾î ³¾ ¼ö ÀÖ´Ù.  
        </para> 
        <para> 
            ´ë¹®ÀÚ º¯È¯(toupper) ÇÁ·Î±×·¥Àº ºÐ¸íÈ÷ Àß ÀÛµ¿Çϱä ÇÏÁö¸¸, ±×°ÍÀº Á¶°ÇÀÌ ¿Ïº®ÇÏ°Ô  
            ¸Â¾Æµé¾î°¡´Â °æ¿ì°¡ µÈ´Ù. ¿¹¸¦ µé¸é ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù°Å³ª Á¸ÀçÇÏÁö¸¸ ±ÇÇѹ®Á¦  
            µîÀ¸·Î ÀоîµéÀÌÁö ¸øÇÏ´Â °æ¿ì°¡ ¹ß»ýÇÒ ¼öµµ ÀÖ´Ù. ¿ì¸®°¡ ¸¸µç ÇÁ·Î±×·¥Àº ÀÌ·¯ÇÑ  
            ¿¹¿Ü »óȲ¿¡ ´ëóÇÏÁö ¸øÇϰí ÀÖ´Ù. ¹®Á¦°¡ ¹ß»ýÇÒ °æ¿ì ¾îµð¿¡¼­ ¹ß»ýÇß´ÂÁö ¾Ë¾Æ  
            ³»±â Èûµé ¼öµµ ÀÖ´Ù. 
        </para> 
        <para> 
            ±×·¡µµ toupper ÇÁ·Î±×·¥Àº ²Ï³ª ÀÛÀº ÇÁ·Î±×·¥À̱⠶§¹®¿¡ ¹®Á¦°¡ Á» ¹ß»ýÇØµµ  
            »çÈÄ Ã³¸®¸¦ Çϴµ¥ ±×¸® ¹®Á¦°¡ µÇÁö ¾Ê°ÚÁö¸¸, ÇÁ·Î±×·¥ÀÇ Å©±â°¡ Ä¿Áö¸é ½É°¢ÇÑ  
            ¹®Á¦°¡ µÉ ¼ö ÀÖ´Ù. ¼öõ ¼ö¸¸¶óÀÎÀÇ ÇÁ·Î±×·¥ÀÌ µ¹´Ù°¡ °©ÀÚ±â "¾Ï·± ¿¡·¯¸Þ½ÃÁöµµ ¾øÀÌ" 
            ÀÛµ¿ÀÌ Áß´ÜµÇ¾î ¹ö¸°´Ù¸é ³­°¨ÇÒ °ÍÀÌ´Ù. ±×·¯¹Ç·Î ÇÁ·Î±×·¥À» ¸¸µé ¶§´Â  
            »óÅÂüũÇϰí À̸¦ Á¦¾îÇϴµ¥ ¸¹Àº ½Ã°£À» ÇÒ¾ÖÇØ¾ß ÇÑ´Ù. ¸¸¾à ¿©·¯ºÐÀÌ ÇÁ·Î±×·¥ÀÇ ¿Ï¼º  
            Çѵ¥ 2ÁÖÀÇ ½Ã°£ÀÌ °É¸°´Ù°í Çϸé ÃÖ¼ÒÇÑ ±×Áß 2ÀÏÁ¤µµ¸¦ °ß°íÇÑ ÇÁ·Ï·¥À» ¸¸µå´Âµ¥  
            »ç¿ëÇØ¾ß ÇÑ´Ù. ¸ðµç ¿¡·¯¸Þ½ÃÁöµéÀº Ç×»ó È­¸é¿¡ Ãâ·Â µÉ ¼ö ÀÖ¾î¾ß ÇÔÀ» ±â¾ïÇ϶ó.  
        </para> 
    </section> 
    <section> 
        <title>°ß°íÇÑ ÇÁ·Î±×·¥À» ¸¸µé±â À§ÇÑ ¸î°¡Áö ÆÁ</title> 
        <section> 
            <title>»ç¿ëÀÚ Å×½ºÆ®</title> 
            <para> 
                Å×½ºÆ®´Â ÇÁ·Î±×·¡¸Ó°¡ ÇØ¾ßµÉ °¡Àå ±âº»ÀûÀÎ ¾÷¹«Áß Çϳª´Ù. ¸¸¾à ÃæºÐÇÑ Å×½ºÆ®°¡  
                ÀÌ·ç¾îÁöÁö ¾Ê´Â´Ù¸é, Á¦´ë·ÎµÈ ÀÛµ¿À» º¸ÀåÇÒ ¼ö ¾ø°ÔµÈ´Ù. ¿¹¸¦ µé¾î ¿©·¯ºÐÀÇ  
                ÇÁ·Î±×·¥ÀÌ ¾ç¼ö¸¦ ÀԷ¹޾Ƽ­ ó¸®Çؼ­ °á°ú¸¦ ¾Ë·ÁÁÖ´Â ÇÁ·Î±×·¥À̶ó°í °¡Á¤ÇØ º¸ÀÚ.  
                ±×·±µ¥ ¾î¶² ÀÌÀ¯·Î À½¼ö°¡ µé¾î¿Ã ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. ȤÀº ¼ýÀÚ ´ë½Å¿¡ ¹®ÀÚ°¡ Ãâ·ÂµÈ´Ù 
                µçÁö Áö³ªÄ¡°Ô Å« ¼ö°¡ ÀԷµǰųª 0ÀÌ ÀԷµǴ µîÀÇ ÀÏÀÌ ¹ß»ýÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.  
                ÀÌ·± °æ¿ì¿¡ ´ëÇØ¼­ ÃæºÐÈ÷ Å×½ºÆ®°¡ ÀÌ·ç¾î Á®¾ß ÇÑ´Ù. ¶ÇÇÑ Ã³À½°ú ¸¶Áö¸·¿¡  
                °ø¹é¹®ÀÚ°¡ ÀÔ·ÂµÈ °æ¿ì, Áß°£¿¡ °ø¹é¹®ÀÚ°¡ ÀÔ·ÂµÈ °æ¿ì ¾Æ¹¸µç ¹ß»ý°¡´É ÇҰŶó°í  
                »ý°¢µÇ´Â ¸ðµç °æ¿ì¿¡ ´ëÇØ¼­ Å×½ºÆ® ÇØ¾ß ÇÑ´Ù. »ç¿ëÀÚ´Â ¾î¶² ÀÔ·ÂÀ» ÇÒÁö ¿¹ÃøÇÒ  
                ¼ö ¾ø±â ¶§¹®ÀÌ´Ù. 
            </para> 
            <para> 
                ¹®Á¦°¡ ¹ß»ýµÇ´Â °æ¿ì¸¦ È®ÀÎÇß´Ù¸é, ÀçÀÔ·ÂÀ» ¿ä±¸ÇÒ °ÇÁö, (°ø¹é µîÀ» Á¦°ÅÇØ¼­)  
                Á¦´ë·ÎµÈ µ¥ÀÌÅÍ·Î ¸¸µé¾î ÁÙ°ÇÁö, ÇÁ·Î±×·¥ÀÇ ´Ù½Ã ½ÇÇà½Ãų °ÇÁö¸¦ °áÁ¤ÇØÁà¾ß ÇÑ´Ù.  
                ÀÌ·± Å×½ºÆ®°¡ ÃæºÐÇÏÁö ¾Ê´Ù¸é, ½ÇÁ¦ Á¦Ç°ÀÌ Ãâ½ÃµÇ°í³ª¼­ °í°´µé·Î ºÎÅÍ Å×½ºÆ®¸¦  
                ¹Þ°Ô µÉ °ÍÀÌ´Ù. ¹°·Ð »ó´çÇÑ ½ºÆ®·¹½º°¡ µÉ °ÍÀÌ´Ù. 
            </para> 
        </section> 
        <section> 
            <title>µ¥ÀÌÅÍ Å×½ºÆ®</title> 
            <para> 
                ÇÁ·Î±×·¥À» µðÀÚÀÎ ÇÒ¶§, ´ç½ÅÀÌ »ç¿ëÇÏ´Â °¢°¢ÀÇ ÇÔ¼ö´Â ¹Þ¾Æµé¿©¾ßÇÒ µ¥ÀÌÅÍÀÇ ¹üÀ§¿¡  
                ´ëÇØ¼­ ¸íÈ®È÷ ÇØ¾ß ÇÑ´Ù. À̸¦ À§Çؼ­ ÇÁ·Î±×·¡¸Ó´Â ÇÔ¼ö¿¡ ÀԷµǴ µ¥ÀÌÅÍ¿¡ ´ëÇÑ  
                Å×½ºÆ®¸¦ ÇØ¾ß ÇÑ´Ù. °¡Àå Áß¿äÇÑ Å×½ºÆ®´Â <emphasis>corner case</emphasis>¿Í  
                <emphasis>edge case</emphasis> Å×½ºÆ®´Ù. °£´ÜÈ÷ ¸»Çؼ­ °æ°è°ªÀ» ÀÔ·ÂÇßÀ» ¶§  
                ¾î¶² ¹®Á¦°¡ ¹ß»ýÇÏ´ÂÁö¸¦ Å×½ºÆ® ÇÏ´Â °ÍÀÌ´Ù.    
            </para> 
            <para> 
                ´ÙÀ½Àº ÀÌ·¯ÇÑ Å×½ºÆ®¸¦ À§Çؼ­ Ưº°È÷ ´ÙÀ½°ú °°Àº °ªµéÀ» Áß¿äÇÏ°Ô Å×½ºÆ® ÇØ¾ß ÇÑ´Ù. 
                <itemizedlist> 
                    <listitem> 
                        <para> 
                            ¼ýÀÚ 0 
                        </para> 
                    </listitem> 
                    <listitem> 
                        <para> 
                            ¼ýÀÚ 1  
                        </para> 
                    </listitem> 
                    <listitem> 
                        <para> 
                            ¹üÀ§¿¡ µé¾î°¡´Â ¼ýÀÚ 
                        </para> 
                    </listitem> 
                    <listitem> 
                        <para> 
                            ¹üÀ§¸¦ ÃʰúÇÏ´Â ¼ýÀÚ 
                        </para> 
                    </listitem> 
                    <listitem> 
                        <para> 
                            ¹üÀ§¿¡¼­ °¡Àå Å« ¼ýÀÚ 
                        </para> 
                    </listitem> 
                    <listitem> 
                        <para> 
                            ¹üÀ§¿¡¼­ °¡Àå ÀÛÀº ¼ýÀÚ 
                        </para> 
                    </listitem> 
                    <listitem> 
                        <para> 
                            ¹üÀ§¿¡¼­ °¡Àå ÀÛÀº ¼ýÀÚº¸´Ù ÇѴܰè ÀÛÀº ¼ýÀÚ 
                        </para> 
                    </listitem> 
                    <listitem> 
                        <para> 
                            ¹üÀ§¿¡¼­ °¡Àå Å« ¼ýÀÚº¸´Ù ÇѴܰè Å« ¼ýÀÚ  
                        </para> 
                    </listitem> 
                </itemizedlist> 
                ¿¹¸¦ µé¾î¼­ 5¿Í 200»çÀÌÀÇ °ªÀ» ¹Þ¾ÆµéÀÌ´Â ÇÁ·Î±×·¥À̶ó°í ÇÑ´Ù¸é °³ÀÎÀûÀ¸·Î 0, 1, 4,  
                5, 153, 200, 201, 255µî¿¡ ´ëÇØ¼­ Å×½ºÆ®¸¦ ÇÒ°ÍÀÌ´Ù. 
                ±×¸®°í ¾î¶² ¼öµé¿¡ ´ëÇØ¼­ ÁßÁ¡ÀûÀ¸·Î Å×½ºÆ®¸¦ ÇØ¾ß ÇÏ´ÂÁö¿¡  
                ´ëÇØ¼­µµ °áÁ¤ÇÒ Çʿ䰡 ÀÖ´Ù. ¿¹¸¦µé¾î¼­ ÇÁ·Î±×·¡¸ÓÀÇ ³ªÀ̸¦ ¹Þ¾Æµé¿©¼­ Å×½ºÆ®ÇÏ´Â  
                ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù°í Çϸé 20¿¡¼­ 40»çÀÌÀÇ ¼ö¿¡ ´ëÇØ¼­ ÁýÁßÀûÀ¸·Î Å×½ºÆ®ÇÒ Çʿ䰡  
                Àֱ⠶§¹®ÀÌ´Ù. 
            </para> 
            <para> 
                ƯÈ÷ 0¿¡ ´ëÇØ¼­´Â °¢º°È÷ Å×½ºÆ®ÇÒ Çʿ䰡 Àִµ¥, ¸¸¾à ÇÔ¼ö°¡ ÀÔ·ÂµÈ °ªÀ¸·Î ³ª´©´Â  
                ¿¬»êÀÌ Àִµ¥, ÀÌ ¶§ 0ÀÌ  
                ÀԷµǸé ÇÁ·Î±×·¥ÀÇ ÀÛµ¿ÀÌ ¾Æ¿¹ Á¾·áµÇ¾î ¹ö¸®´Â °æ¿ì°¡ ¹ß»ýÇÒ ¼öµµ Àֱ⠶§¹®ÀÌ´Ù.  
            </para> 
            <para> 
                ÀÌ·± ÀÌÀ¯·Î ³»ºÎ¿¡¼­ »ç¿ëµÇ´Â ÇÔ¼öµéÀº ¿Ã¹Ù¸¥ µ¥ÀÌÅÍÀÎÁö, ȤÀº ÁÁÀº µ¥ÀÌÅÍÀÎÁö¸¦  
                È®ÀÎÇϱâ À§Çؼ­ (°ªÀÇ ¹üÀ§°¡ 0-255±îÁö¶ó°í ÇßÀ» ¶§, »ç¶÷ÀÇ ³ªÀ̸¦ üũÇÏ´Â ÇÁ·Î±×·¥ 
                À̶ó¸é, 244°¡ ºñ·Ï ¿Ã¹Ù¸¥ µ¥ÀÌÅͶó°í ÇÏ´õ¶óµµ ÁÁÀº µ¥ÀÌÅͶó°í´Â ÇÒ ¼ö ¾ø´Ù), 
                ´ë¼Ò °ü°è¸¦ ÀÌ¿ëÇÏ°Ô µÈ´Ù. ¸¸¾à ÀÔ·ÂµÈ °ªÀÌ ¹üÀ§¸¦ ¹þ¾î³­´Ù¸é ¿¡·¯¸Þ½ÃÁö¸¦ Ãâ·ÂÇϰųª 
                ÇÁ·Î±×·¥ÀÌ Á¾·áÇϵµ·Ï ÇÏ¸é µÉ°ÍÀÌ´Ù.  
                C¾ð¾î¿¡¼­´Â assert¶ó´Â ¸ÅÅ©·Î ÇÔ¼ö¸¦ ÀÌ¿ëÇϸé ÀÌ·¯ÇÑ Ã¼Å©°úÁ¤À» Á»´õ ¼ö¿ùÇÏ°Ô ÇÒ ¼ö  
                ÀÖ´Ù. assertÇÔ¼ö´Â Á¶°ÇÀ» Å×½ºÆ®Çؼ­ Á¶°Ç¿¡ ¸ÂÁö ¾ÊÀ¸¸é ¿¡·¯¸Þ½ÃÁö¸¦ Ãâ·ÂÇϰí,  
                ³»ºÎÀûÀ¸·Î abort()ÇÔ¼ö¸¦ È£ÃâÇØ¼­ ÇÁ·Î±×·¥À» Á¾·á ½ÃŲ´Ù. ¸¸¾à¿¡ assertÇÔ¼ö°¡  
                Ȱ¼ºÈ­ µÇÁö ¾Êµµ·Ï ÇÒ·Á¸é ÄÄÆÄÀϽà NDEBUG¿É¼ÇÀ» ÁÖ¸é µÈ´Ù.   
                <screen> 
#include <assert.h> 
 
int main() 
{ 
  int a=3, b=4; 
  assert(a > b); 
} 
                </screen> 
                À§ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇØ¼­ ½ÇÇà ½ÃŰ¸é ¿¡·¯°¡ ¹ß»ýÇϰí ÇÁ·Î±×·¥ÀÌ Á¾·áµÈ´Ù.  
                ¸¸¾à assertÇÔ¼ö¸¦ ¹«½ÃÇÏ°í ½Í´Ù¸é ¾Æ·¡¿Í °°ÀÌ ÄÄÆÄÀÏ ÇÏ¸é µÈ´Ù.  
                <screen> 
# gcc -DNDEBUG -o assert assert.c 
                </screen> 
                ÀÌ·¸°Ô Äڵ带 ¸¸µé¾î ³õÀ¸¸é µð¹ö±ë ÄÚµå¿Í ½ÇÁ¦ ¹èÆ÷µÉ Äڵ带 ±¸ºÐÁöÀ» ¼ö ÀÖ´Ù´Â  
                ÀåÁ¡À» °¡Áø´Ù. ¾î¶µç °í°´¿¡°Ô ¹èÆ÷µÇ´Â Äڵ忡 µð¹ö±ë ¸Þ½ÃÁö°¡ Ãâ·ÂµÇ°Å³ª ÇØ¼­´Â  
                ³­°¨Çϱ⠶§¹®ÀÌ´Ù.  
            </para> 
        </section> 
        <section> 
            <title>¸ðµâ Å×½ºÆ®</title> 
            <para> 
                ¾î¶² Å×½ºÆ®¸¦ ÇÒ¶§ ¹Ýµå½Ã ÇÁ·Î±×·¥ÀÇ ¸ðµç ÇÔ¼ö¿Í È帧¿¡ ´ëÇØ¼­ Å×½ºÆ®¸¦ ÇÒ ÇÊ¿ä´Â  
                ¾øÀ» °ÍÀÌ´Ù. ÀÌ·±½ÄÀÇ Å×½ºÆ®´Â º¸Åë ½Ã°£µµ ¸¹ÀÌ °É¸®°í üũ¹üÀ§°¡ ³Ð¾îÁ®¼­ ¹®Á¦Á¡À» 
                ã¾Æ³»±âµµ Èûµé±â ¶§¹®ÀÌ´Ù. ±×·¡¼­ º¸ÅëÀº °¢ ¸ðµâ(ÇÔ¼ö)´ÜÀ§·Î Å×½ºÆ®¸¦ Çϰí, ¾î´ÀÁ¤µµ 
                Å×½ºÆ®°¡ ³¡³ª¸é Àüü Å×½ºÆ®¸¦ ÇÏ°Ô µÈ´Ù. ÇÔ¼ö´ÜÀ§·Î Å×½ºÆ®¸¦ ÇÏ¸é ¾Æ¹«·¡µµ  
                Á»´õ ºü¸£°í ¸íÈ®ÇÏ°Ô ¹®Á¦Á¡À» È®ÀÎÇÏ°í ¿¹ÃøÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.  
            </para> 
            <para> 
                ÇÁ·Î±×·¥Àº ¾î¶² ¹®Á¦¸¦ Ç®±âÀ§Çؼ­ ¿©·¯°³ÀÇ ÇÔ¼ö¸¦ È£ÃâÇϸç, ÇÁ·Î±×·¡¸Ó´Â ÀÌ ÇÔ¼öµéÀ»  
                ´Ü°èº°·Î üũÇÔÀ¸·Î½á Å×½ºÆ®¸¦ ¼öÇàÇÏ°Ô µÈ´Ù. ÇÔ¼ö¿¡ ´ëÇÑ Ã¼Å©´Â ÀԷ°ª°ú 
                °á°ú(return °ª)À» È®ÀÎÇÔÀ¸·Î½á ÀÌ·ç¾îÁø´Ù. ÇÁ·Î±×·¥ÀÇ Å×½ºÆ®¸¦ ´ÜÀ§ ÇÔ¼öº°·Î  
                ºÐ¸®½ÃÄѼ­ ½±°Ô Å×½ºÆ® ÇÒ ¼ö ÀÖ´Ù´Â °Íµµ ÇÁ·Î±×·¥À» ¿©·¯°³ÀÇ Á¶±×¸¸ ÇÔ¼öµé·Î Âɰ³¼­  
                °³¹ßÇÏ´Â ÀÌÀ¯À̱⵵ ÇÏ´Ù. 
            </para> 
            <para> 
                ¶ÇÇÑ ÇÔ¼ö´ÜÀ§·Î Å×½ºÆ®´Â ÇÁ·Î±×·¥ÀÌ ¿ÏÀüÈ÷ °³¹ßµÇÁö ¾ÊÀº »óÅ¿¡¼­µµ °¡´ÉÇÏ´Ù.  
                ÀüÀÚ »ó°Å·¡ °ü·Ã ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µç´Ù°í ÇÑ´Ù¸é is_ready_to_checkinÀ̶ó´Â ÇÔ¼ö¸¦  
                ¸¸µé¾î¼­ °í°´ÀÇ ÀÎÁõ°ü·Ã ÇÔ¼ö¸¦ ¸ÕÀú ¸¸µé¾î¼­ À̺κи¸ µû·Î ¶¼¾î³»¼­ Å×½ºÆ® ÇÒ ¼ö  
                ÀÖÀ» °ÍÀÌ´Ù. ¸¸µé¾îÁö°í Å×½ºÆ®µÈ ÇÔ¼ö´Â ·¹°íºí·° ½×µíÀÌ Àüü ÇÁ·Î±×·¥¿¡ °¡Á®´Ù  
                ºÙÀ̱⸸ ÇÏ¸é µÈ´Ù.  
            </para> 
        </section> 
    </section> 
    <section> 
        <title>¿¡·¯ Çڵ鸵ÀÇ ±âº»</title> 
        <para> 
            Å×½ºÆ®°¡ Áß¿äÇÏ´Ù´Â °ÍÀº ¸»ÇÒ Çʿ䵵 ¾øÀ» °ÍÀÌ´Ù. ¿©±â¿¡¼­´Â Å×½ºÆ®¸¦ ÅëÇØ¼­  
            ¿¡·¯¸¦ ã¾Æ³»°í À̸¦ ó¸®ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.  
        </para> 
        <section> 
            <title>¸ðµç °ÍÀº ¿¡·¯Äڵ带 °¡Áø´Ù.</title> 
            <para> 
            </para> 
        </section> 
    </section> 
    <section> 
        <title>°á°íÇÑ ÇÁ·Î±×·¥À¸·Î ¸¸µé±â</title> 
        <para> 
            À̹øÀå¿¡¼­´Â <xref linkend="addyear">¿¡¼­ ´Ù·ç¾ú´ø add-year.s ÇÁ·Î±×·¥À» °ß°íÇÏ°Ô  
            ¸¸µé¾î º¸µµ·Ï ÇϰڴÙ.  
        </para> 
        <para> 
            ÀÌ ÇÁ·Î±×·¥Àº °£´ÜÇϱ⠶§¹®¿¡ ´ÜÁö ÇϳªÀÇ recovery Æ÷ÀÎÅ͸¦ °¡Áöµµ·Ï Á¦ÇÑÇϰڴÙ. 
        </para> 
    </section> 
</section> 
<section> 
    <title>¶óÀ̺귯¸®¸¦ ÅëÇÑ ÇÔ¼ö °øÀ¯</title> 
    <para>     
        Áö±Ý±îÁöÀÇ ³»¿ëÀ» ÅëÇÏ¿© ´Ü¼øÈ÷ »çÄ¢¿¬»êÀ» ÇÏ´Â °£´ÜÇÑ ÇÁ·Î±×·¥ Á¶Â÷µµ, ÄÄÇ»Å͸¦  
        ÅëÇØ¼­ ±¸Çö½Ãų·Á¸é »ó´çÈ÷ ¸¹Àº ÀÏÀ» ÇØ¾ßÇÑ´Ù´Â °ÍÀ» ´À²¼À» °ÍÀÌ´Ù. 
        °Ô´Ù°¡ ¿ì¸®°¡ ¾ÕÀ¸·Î ¸¸µé¾î¾ß ÇÒ ÇÁ·Î±×·¥µéÀº Áö±Ý±îÁö ¸¸µé¾î¿Ô´ø (°£´ÜÇÑ)ÇÁ·Î±×·¥µé  
        º¸´Ù ÈξÀ º¹ÀâÇÒ È®·üÀÌ ¸¹´Ù.  
        ±×·¯¹Ç·Î °¡´ÉÇÑÇÑ ÇÁ·Î±×·¥À» ½±°Ô ¸¸µé ¼ö ÀÖ´Â ¾î¶² ÇÁ·Î¼¼½ºÀÇ Á¤¸³ÀÌ ÇÊ¿äÇÏ°Ô  
        µÈ´Ù. ¿©±â¿¡´Â ´ÙÀ½°ú °°Àº ¸î°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù.  
        <itemizedlist> 
            <listitem> 
                <para> 
                    ¾î¼Àºí¸® ´ë½Å °í±Þ¾ð¾î¸¦ ÀÌ¿ëÇØ¼­ Äڵ带 ÀÛ¼ºÇÑ´Ù.  
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    ÇÁ·Î±×·¥À» ¸¸µé±â Àü¿¡ ¿©·¯°³ÀÇ (°£´ÜÇÑ) Äڵ带 ¸¸µé°í, ÀÌ°É  
                    Á¶ÇÕÇØ¼­(°¡Á®´Ù ºÙÀ̱â·Î) ÇÁ·Î±×·¥À» ÀÛ¼ºÇÑ´Ù. 
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    ÇÁ·Î±×·¥µé »çÀÌ¿¡ °øÅëÀûÀ¸·Î »ç¿ëÇÏ´Â ÇÔ¼öÀÇ ¸ðÀ½À» µû·Î °ü¸®Çؼ­  
                    °øÀ¯ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.  
                </para> 
            </listitem> 
        </itemizedlist> 
        À§ÀÇ ¹æ¹ýµéÀº ¸ðµÎ ÇÁ·ÎÁ§Æ®¸¦ ¼öÇàÇÔ¿¡ À־ ½ÇÁúÀûÀ¸·Î ÇÊ¿äÇÑ °ÍµéÀÌ´Ù.  
        ù¹øÂ° ¹æ¹ýÀÎ °í±Þ¾ð¾î¸¦ ÀÌ¿ëÇÏ´Â °Í¿¡ ´ëÇØ¼­´Â 11Àå¿¡¼­ ´Ù·çµµ·Ï ÇϰڴÙ.  
        µÎ¹øÂ° ¹æ¹ýÀº À¯¿ëÇÑ ¹æ¹ýÀ̱ä ÇÏÁö¸¸ ´ÙÀ½°ú °°Àº ¹®Á¦Á¡µéÀ» °¡Áø´Ù.  
        <itemizedlist> 
            <listitem> 
                <para> 
                    º¹»çµÈ ÄÚµå´Â ½ÇÁ¦ Äڵ忡¼­ Á¾Á¾ Å©°Ô ¼öÁ¤µÇ°ï ÇÑ´Ù. 
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    º¸Åë º¹»çµÇ´Â ÄÚµå´Â ÇÁ·Î±×·¥¿¡ ¿©·¯¹ø Æ÷ÇÔÀÌ µÈ´Ù.  
                    À̰ÍÀº ³¶ºñ¸¦ ÃÊ·¡ÇÒ »Ó ¾Æ´Ï¶ó, ÄÚµåÀÇ ¼öÁ¤À» ¾î·Æ°Ô ¸¸µç´Ù.     
                </para> 
            </listitem> 
            <listitem> 
                <para> 
                    ¸¸¾à º¹»çµÈ Äڵ忡¼­ ¹®Á¦°¡ ¹ß»ýÇß´Ù¸é ÀÌ Äڵ带 »ç¿ëÇÏ´Â 
                    ¸ðµç ÀÀ¿ëÀÇ Äڵ带 ¼öÁ¤Çؼ­ ´Ù½Ã ¹èÆ÷ÇØ¾ß¸¸ ÇÑ´Ù. 
                </para> 
            </listitem> 
        </itemizedlist> 
        ±×·¯¹Ç·Î µÎ¹øÂ° ¹æ¹ýÀº ²À ÇÊ¿äÇÑ ºÎºÐ¿¡¼­¸¸ »ç¿ëÇϵµ·Ï ÇÑ´Ù. ¼¼¹øÂ° ¹æ¹ýÀº °¡Àå  
        ÀÚÁÖ ÀÌ¿ëÇÑ´Ù. À̰ÍÀº °øÅëÀ¸·Î »ç¿ëµÇ´Â Äڵ带 ÀçÀÛ¼º ÇÏÁö ¾Ê°í ÀÌ¹Ì ÀúÀåµÇ¾î ÀÖ´Â  
        Äڵ带 Àоî¿À´Â ¹æ½ÄÀ» ÃëÇÑ´Ù - Á¤È®ÇϰԴ ȣÃâµÈ ÇÔ¼öÀÇ À§Ä¡¸¦ °¡Á®¿Í¼­ ½ÇÇàÇÑ´Ù -.  
        À̰ÍÀº µ¿ÀÏÇÑ ÇÔ¼ö¸¦ º¹»çÇØ¼­ »ç¿ëÇØ¾ß ÇÏ´Â ³¶ºñ¸¦ ¾ø¾ÖÁØ´Ù.  
        ¶ÇÇÑ Äڵ忡 ¹ö±×°¡ ¹ß»ýÇßÀ» °æ¿ì¿¡µµ ÀÏÀÏÀÌ ÇÁ·Î±×·¥À» ¼öÁ¤ÇÒ ÇÊ¿ä ¾øÀÌ  
        °øÅëÀ¸·Î È£ÃâÇÏ´Â ÇÔ¼ö¸¸ ¼öÁ¤ÇÏ¸é µÇ±â ¶§¹®¿¡ ¹ö±×µµ ½±°Ô °ü¸®ÇÒ ¼ö ÀÖ°Ô µÈ´Ù. 
        ¹°·Ð ÀÌ ¹æ¹ýµµ ¸î°¡Áö ¹®Á¦¸¦ °¡Áö°í ÀÖ´Ù. 
        <itemizedlist> 
            <listitem> 
                <para> 
                    ¸¸¾à ¿©·¯°³ÀÇ ÇÁ·Î±×·¥ÀÌ ÇÔ¼öÆÄÀÏ(¶óÀ̺귯¸®)¸¦ °øÀ¯Çϰí ÀÖÀ» ¶§,  
                    °ú¿¬ ÀÌ ÇÔ¼öÆÄÀÏÀ» Áö¿öµµ ±¦ÂúÀ»Áö ¾î¶»°Ô ÆÇ´ÜÇÒ ¼ö ÀÖÀ» ±î ? 
                    ´õÀÌ»ó ÇÊ¿ä ¾ø´Ù°í ÆÇ´ÜÇØ¼­ Áö¿ü´Âµ¥, ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ À̸¦ »ç¿ëÇϰí À־  
                    ±× ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇÁö ¾Ê´Â °æ¿ì¸¦ ¿¹»óÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù.  
                </para> 
            </listitem> 
            <listitem> 
                <para> 
Some programs inadvertantly rely on bugs within shared functions. Therefore, if upgrading the shared program fixes a bug that a program depended on, it could cause that application to cease functioning. 
                </para> 
            </listitem> 
        </itemizedlist> 
        ÀÌ·¯ÇÑ ¹®Á¦¸¦ "DLL hell"À̶ó°í ºÎ¸¥´Ù. ±×·¸Áö¸¸ ÀÌ·¯ÇÑ ´ÜÁ¡º¸´Ù´Â ¾ò´Â À̵æÀÌ  
        ÈξÀ Å©±â ¶§¹®¿¡ ÀÌ ¹æ¹ýÀ» ÁÖ·Î »ç¿ëÇÑ´Ù. 
    </para>     
    <para>     
        ÇÁ·Î±×·¡¹Ö¿¡¼­ ÀÌ·¯ÇÑ °øÀ¯µÇ´Â ÄÚµå ÆÄÀÏÀ» <emphasis>shared libraries, shared objects, 
        dynamic-link libraries, DLLs ȤÀº .so ÆÄÀÏ</emphasis> À̶ó°í ÇÑ´Ù. 
        ¿©±â¿¡¼­´Â °øÀ¯¶óÀ̺귯¸®(shared libraries)¶ó°í ºÎ¸£µµ·Ï ÇϰڴÙ. 
    </para> 
    <section> 
        <title>°øÀ¯ ¶óÀ̺귯¸®ÀÇ ÀÌ¿ë</title> 
        <para> 
            °øÀ¯¶óÀ̺귯¸®¸¦ Å×½ºÆ® Çϱâ À§Çؼ­ °£´ÜÇÑ ¿¹¸¦ µé¾îº¸µµ·Ï ÇϰڴÙ.  
            ÀÌ ÇÁ·Î±×·¥Àº È­¸é¿¡ hello world¸¦ Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥À¸·Î  
            À̸§Àº helloworld-nolib.s·Î ÇϰڴÙ. 
            <screen> 
.include "linux.s" 
.section .data 
 
helloworld: 
    .ascii "hello world\n" 
helloworld_end: 
 
    .equ helloworld_len, helloworld_end - helloworld 
 
    .section .text 
    .globl _start 
 
_start: 
    movl  $STDOUT, %ebx 
    movl  $helloworld, %ecx 
    movl  $helloworld_len, %edx 
    movl  $SYS_WRITE, %eax 
    int   $LINUX_SYSCALL 
 
    movl  $0, %ebx 
    movl  $SYS_EXIT, %eax 
    int   $LINUX_SYSCALL 
            </screen> 
            °£´ÜÇÑ ÄÚµåÀÓÀ¸·Î ¼³¸íÀº »ý·«ÇϰڴÙ. ´ÙÀ½Àº À§ ÇÁ·Î±×·¥ÀÇ °øÀ¯ ¶óÀ̺귯¸®  
            È£Ãâ ¹öÁ¯À¸·Î À̸§Àº helloworld-lib.sÀÌ´Ù. 
            <screen> 
.section .data 
 
helloworld: 
    .ascii "hello world\n\0" 
 
    .section .text 
    .globl _start 
 
_start: 
    pushl $helloworld 
    call printf 
 
    pushl $0 
    call exit 
            </screen> 
            °øÀ¯ ¶óÀ̺귯¸® È£Ãâ ¹öÁ¯Àº Äڵ尡 ´õ¿í ´Ü¼øÇØ Á³´Ù. ÀÌÀ¯´Â °£´ÜÇÏ´Ù. Ãâ·Â°ú  
            °ü·ÃµÈÀÏÀ» ½Ã½ºÅÛ È£ÃâÀ» ÅëÇÏ¿© Á÷Á¢ ÄÚµùÇÏÁö ¾Ê°í, ¶óÀ̺귯¸®¿¡¼­ Á¦°øÇÏ´Â  
            printfÇÔ¼ö¸¦ »ç¿ëÇ߱⠶§¹®ÀÌ´Ù. 
            ù¹øÂ° ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°ÀÌ ÄÄÆÄÀÏ ÇØ¼­ ½ÇÇà½ÃŰ¸é µÈ´Ù.  
            <screen> 
# as helloworld-nolib.s -o helloworld-nolib.o 
# ld helloworld-nolib.o -o helloworld-nolib 
            </screen> 
            ±×·¯³ª µÎ¹øÂ° ÇÁ·Î±×·¥ÀÇ °æ¿ì printf¸¦ ¾î¶² °øÀ¯ ¶óÀ̺귯¸®¿¡¼­ È£ÃâÇϵµ·Ï  
            Çß´ÂÁö ¸µÅ©°úÁ¤¿¡¼­ ¾Ë·ÁÁÙ Çʿ䰡 ÀÖ´Ù. 
            <screen> 
# as helloworld-lib.s -o helloworld-lib.o 
# ld -dynamic-linker /lib/ld-linux.so.2 -o helloworld-lib helloworld-lib.o -lc 
            </screen> 
            °øÀ¯ ¶óÀ̺귯¸®¸¦ ¸µÅ© ½Ã۱â À§Çؼ­ -dynamic-linker ¿É¼ÇÀ» »ç¿ëÇϰí ÀÖ´Ù.  
            ¸®´ª½º »ó¿¡¼­ °øÀ¯ ¶óÀ̺귯¸® ¸µÅ©¸¦ À§Çؼ­´Â Ç×»ó  
            -dynamic-linker /lib/ld-linux.so.2ÀÌ ÇÁȨµÇ¾î¾ß ÇÑ´Ù. À̰ÍÀº ÇÁ·Î±×·¥ÀÌ  
            ½ÇÇàµÉ¶§ ¿î¿µÃ¼Á¦·Î ºÎÅÍ /lib/ld-linux.so.2¸¦ ÀÌ¿ëÇØ¼­ ¿ÜºÎ ¶óÀ̺귯¸®¸¦  
            ¸µÅ© ½Ãų ¼ö ÀÖµµ·Ï ¸¸µé¾î ÁØ´Ù.  
        </para> 
        <para> 
            -lc ´Â c ¶óÀ̺귯¸®¸¦ ¸µÅ©½ÃÄѶõ ¶æÀÌ´Ù. c¶óÀ̺귯¸®´Â  
            GNU/LinuxÀÇ °æ¿ì libc.so¶ó´Â À̸§À» °¡Áö°í ÀÖ´Ù. ¿©±â¿¡¼­ óÀ½ÀÇ lib¿Í ¸¶Áö¸·ÀÇ  
            .so¸¦ Á¦°Å½ÃŲ À̸§À» -lµÚ¿¡ ºÙ¿©ÁÜÀ¸·Î½á ÇÊ¿äÇÑ ¶óÀ̺귯¸®¸¦ ¸µÅ©½ÃŰ°Ô µÈ´Ù.  
            libc¿¡´Â printf(3)¿Í exit(3)¸¦ ºñ·ÔÇÑ ´Ù¾çÇÑ ÇÔ¼ö¸¦ °¡Áö°í ÀÖ´Ù.  
        </para> 
    </section> 
</section> 
<section> 
    <title>¸Þ¸ð¸®¿¡ ´ëÇÏ¿©</title> 
    <para> 
        ¿©±â¿¡¼­ ´Ù·ç´Â ÁÖÁ¦´Â ½ÇÁúÀûÀÎ ÇÁ·Î±×·¡¹Ö ±â¼ú°ú´Â °ü°è¾ø¾î º¸ÀÏ  
        ¼öµµ ÀÖÀ» °ÍÀ̸ç, Áö±ØÈ÷ ÀÌ·ÐÀûÀÎ °ÍµéÀÌ¶ó¼­ Àç¹Ì¾øÀ» ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. 
        ±×·¸Áö¸¸ ¿©±â¿¡¼­ ´Ù·ç´Â ³»¿ëµéÀº ´ç½ÅÀÌ ¼º°øÀûÀÎ ÇÁ·Î±×·¡¸Ó°¡ µÇ±â À§ÇÑ 
        µçµçÇÑ ÈÄ¿øÀÚ°¡ µÇ¾îÁÙ °ÍÀÌ´Ù.  
    </para>     
    <section> 
        <title>ÄÄÇ»ÅÍ´Â ¸Þ¸ð¸®¸¦ ¾î¶»°Ô ¹Ù¶óº¸´Â°¡</title> 
        <para> 
            ¿ì¸®´Â ÀÌ¹Ì 2Àå<xref linkend="struct">¿¡¼­ ÄÄÇ»ÅͰ¡ ¸Þ¸ð¸®¸¦ ¾î¶»°Ô  
            º¸´ÂÁö¿¡ ´ëÇØ¼­ °£´ÜÈ÷ ¾Ë¾Æº¸¾Ò´Ù. ÄÄÇ»ÅÍ´Â ¸Þ¸ð¸®ÀÇ °¢ ÀúÀ念¿ªÀ»  
            ÃÖ¼Ò´ÜÀ§·Î ³ª´©°í, ¿©±â¿¡ ÀÏ·ÃÀÇ ¿¬¼ÓµÈ ¹øÈ£¸¦ ºÙ¿©¼­ °ü¸®ÇÏ°Ô µÈ´Ù.  
            ÃÖ±ÙÀÇ ÄÄÇ»Å͵éÀº ±âº» 512MÀÌ»óÀÇ Å©±â¸¦ °¡Áö°Ô µÇ¹Ç·Î ±âº» ¼ö¹é¸¸ ´ÜÀ§ÀÇ  
            ÀϷùøÈ£°¡ ºÙ°Ô µÉ°ÍÀÌ´Ù. 
        </para> 
        <para> 
            ´ç½ÅÀÌ ¸¸µç ÇÁ·Î±×·¥Àº ÇÊ¿¬ÀûÀ¸·Î µ¥ÀÌÅÍ¿¡ ´ëÇÑ Á¶ÀÛÀ» ÇÊ¿ä·Î Çϸç, 
            ÀÌ·¯ÇÑ µ¥ÀÌÅÍ´Â ¸Þ¸ð¸®¿¡ ¾²¿©Áö°í ÀÐÇôÁö°Ô µÈ´Ù. ±âº»ÀûÀ¸·Î ÄÄÇ»ÅÍ´Â   
            µ¥ÀÌÅͰ¡ ¾î´ÀÀ§Ä¡¿¡ ³õ¿©¾ß ÇÏ´ÂÁö, µ¥ÀÌÅͰ¡ ¾î´ÀÁ¤µµÀÇ ÀúÀ念¿ªÀ»  
            ÇÊ¿ä·Î ÇÏ´ÂÁö¿¡ ´ëÇØ¼­ ¾Æ´Â ¹Ù°¡ ÀüÇô ¾øÀ¸¹Ç·Î, µ¥ÀÌÅͰ¡ ¾îµð¿¡  
            ¾î¶»°Ô ÀúÀåµÉÁö¸¦ ¸í·É(instruction)À» ÅëÇØ¼­ ÄÄÇ»ÅÍ¿¡°Ô ¾Ë·ÁÁà¾ß ÇÑ´Ù.  
            ÀÌ·± ¸í·É¿ª½Ã ÀúÀ念¿ª¿¡ ¾²¿©ÁøÈÄ ¸Þ¸ð¸®¿¡ ÀúÀåµÈ´ÙÀ½ ÄÄÇ»ÅͰ¡ Àо°Ô µÈ´Ù.  
            ÇѸ¶µð·Î ¸ðµç°Ô ¸Þ¸ð¸®¿µ¿ª¿¡ µé¾î°£´ÙÀ½ ÄÄÇ»ÅÍ¿¡ ÀÇÇØ¼­ ÀÐÇôÁö°í ½ÇÇàµÇ¾îÁø´Ù.   
        </para> 
        <para> 
            ÇÊ¿ä·Î ÇÏ°Ô µÈ´Ù.  
            <screen> 
movl data_items(, %edi, 4), %ebx 
            </screen> 
            ¿¹¸¦ µé¾î À§ÀÇ ¸í·ÉÀº 7ÀÇ ÀúÀ念¿ªÀ» ÇÊ¿ä·Î ÇÑ´Ù. óÀ½ ¸í·ÉÀº 2¹ÙÀÌÆ®, ´ÙÀ½ ·¹ÀÌÁö½ºÅÍÀÇ »ç¿ëÀ» À§Çؼ­ 1¹ÙÀÌÆ®, ¸¶Áö¸·À¸·Î data_items¿µ¿ªÀ» À§Çؼ­ 4¹ÙÀÌÆ®¸¦ »ç¿ëÇÏ°Ô µÈ´Ù. ¸Þ¸ð¸®»ó¿¡¼­´Â ÀÌ·¯ÇÑ À§Ä¡¸¦ ÀÏ·ÃÀÇ ¼ýÀÚ¸¦ ÅëÇØ¼­ ã¾Æ³»°Ô µÈ´Ù. ¸Þ¸ð¸®¿Í °ü·ÃµÇ¾î¼­ ¸î°¡Áö ¿ë¾î¸¦ Á¤¸®ÇØ º¸µµ·Ï ÇÏÀÚ.  
            <variablelist> 
                <varlistentry> 
                <term>Address</term> 
                <listitem> 
                    <para> 
                        Address(ÁÖ¼Ò)´Â ÀúÀåÀ§Ä¡¸¦ °¡¸®Å°±â À§ÇÑ ¼ýÀÚ´Ù. ÄÄÇ»ÅÍ´Â  
                        ¸Þ¸ð¸®ÀÇ Ã¹¹øÂ° ÁÖ¼Ò°¡ 0ÀÌ µÇ¸ç, °è¼Ó 1¾¿ Áõ°¡ÇÏ¸ç ¸Þ¸ð¸®ÀÇ 
                        À§Ä¡¸¦ °áÁ¤ÇÑ´Ù. ÀÌ·¯ÇÑ ÁÖ¼Ò´Â ÄÄÇ»ÅͰ¡ »ç¿ëÇϱ⿡´Â  
                        Æí¸®ÇÏÁö¸¸ Àΰ£ÀÌ º¸±â¿¡´Â ¹®Á¦°¡ Àֱ⠶§¹®¿¡, ¼ýÀÚ ´ë½Å 
                        ÀÌÇØÇϱ⠽¬¿î ½Éº¼ (data_items ¿Í °°Àº)À» »ç¿ëÇÑ´Ù.  
                    </para> 
                </listitem> 
                </varlistentry> 
                <varlistentry> 
                <term>Pointer</term> 
                <listitem> 
                    <para> 
                    Æ÷ÀÎÅÍ´Â ÁÖ¼Ò°ªÀ» °¡Áö°í ÀÖ´Â ¸Þ¸ð¸® ȤÀº ·¹Áö½ºÅÍ¿µ¿ªÀÌ´Ù. 
                    À§ÀÇ ¿¹Á¦¿¡¼­ <emphasis>%ebp</emphasis>°¡ Æ÷ÀÎÅÍ·Î, ÇöÀçÀÇ  
                    stack¿µ¿ªÀ» point(<emphasis>°¡¸®Å²´Ù</emphasis>)ÇÑ´Ù. 
                    ´ëºÎºÐÀÇ ÇÁ·Î±×·¡¹Ö°úÁ¤¿¡ À־ ¸¹Àº ¼öÀÇ Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ°Ô µÈ´Ù.  
                    </para> 
                </listitem> 
                </varlistentry> 
                <varlistentry> 
                <term>Byte</term> 
                <listitem> 
                    <para> 
                        ÀúÀåÀ» À§ÇÑ ÃÖ¼Ò´ÜÀ§´Ù. x86ÇÁ·Î¼¼½ºÀÇ °æ¿ì ÇѹÙÀÌÆ®´Â 8bit·Î                        0¿¡¼­ 255»çÀÌÀÇ °ªÀ» °¡Áø´Ù.  
                    </para> 
                </listitem> 
                </varlistentry> 
                <varlistentry> 
                <term>Word</term> 
                <listitem> 
                    <para> 
                    ·¹Áö½ºÅÍÀÇ ÀϹÝÀûÀÎ Å©´Ù. x86 ÇÁ·Î¼¼½ºÀÇ °æ¿ì, 1 word´Â  
                    4¸¸Å­ÀÇ ÀúÀ念¿ª(4byte)ÀÇ Å©±â¸¦ °¡Áø´Ù.  
                    </para> 
                </listitem> 
                </varlistentry> 
            </variablelist> 
            ¾ÕÀ¸·Î´Â ÀúÀ念¿ªÀ̶ó´Â ´Ü¾î´ë½Å¿¡ À§¿¡¼­ Á¤ÀÇ ÇÑ ´Ü¾îµéÀ» ¾²°Ô  
            µÉ °ÍÀÌ´Ù. 
        </para> 
    </section> 
    <section> 
        <title>Instruction Pointer</title> 
        <para> 
            ÀÏ´Ü ·¹Áö½ºÅͰ¡ ¹«¾ðÁö ±×·¯°í ¾î¶²ÀÏÀ» ÇÏ´ÂÁö¿¡ ´ëÇØ¼­ Á»´õ  
            ÀÚ¼¼È÷ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. ÀÏ´Ü ¿ì¸®´Â ¸î°¡Áö ·¹Áö½ºÅ͵鿡  
            ´ëÇØ¼­ ¹è¿ü´Âµ¥, ¿©±â¿¡¼­´Â instruction pointerÀ» ´Ù·ç´Â Á»´õ  
            Ưº°ÇÑ ·¹Áö½ºÅÍ¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. ÀÌ ·¹Áö½ºÅÍ´Â %eip·Î  
            »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿ì¸®´Â ÄÄÇ»ÅÍ´Â ¸ðµç°É µ¿ÀÏÇÑ µ¥ÀÌÅÍ·Î  
            Ãë±ÞÇÏ¸ç ¸í·É(instruction)µµ ¿¹¿Ü°¡ ¾øÀ½À» ¾Ë°í ÀÖ´Ù. ÄÄÇ»ÅÍ´Â 
            ÀÌ°Ô ¸í·ÉÀ̵çÁö ¾Æ´Ï¸é ÀÏ¹Ý µ¥ÀÌÅ͵çÁö µ¿ÀÏÇÏ°Ô Ã³¸®¸¦ Çϸç,  
            ¶ÇÇÑ À̵éÀ» ±¸ºÐÇÒ ´É·ÂÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù.  
            ±×·¸´Ù¸é ÄÄÇ»ÅÍ´Â ¾î¶»°Ô ÀÌ·¯ÇÑ ÀÏ·ÃÀÇ µ¥ÀÌÅÍ¿¡¼­ ¸í·ÉÀ» ã¾Æ³»¾î¼­ 
            ±×°É ½ÇÇàÀ» ½ÃŰ°Ô µÇ´Â °ÍÀϱî ? ÇØ´äÀº instruction pointer¿¡ ÀÖ´Ù.  
            ÀÌ instruction pointer¶ó´Â À̸§¿¡¼­ ¿ì¸®´Â ÀÌ Æ÷ÀÎÅͰ¡ ¹«¾ð°¡¸¦  
            °¡¸£Å²´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù. instruction pointerÀº ´ÙÀ½  
            ¸í·É(instruction)À» °¡¸£Å²´Ù.     
            ÄÄÇ»ÅÍ´Â instruction pointer¸¦ »ìÆìº½À¸·Î½á, ´ÙÀ½¿¡ ¾î¶² ¸í·ÉÀ» ½ÇÇàÇØ¾ß µÉÁö¸¦ ¾Ë¼ö À̰ڵȴÙ. 
            ÇØ´ç ¸í·ÉÀ» ½ÇÇàÇÏ°Ô µÇ¸é instruction pointer´Â ´ÙÀ½ ¸í·ÉÀÇ À§Ä¡¸¦  
            °¡¸®Å°µµ·Ï °ªÀÌ Áõ°¡°¡µÇ¸ç, ÇöÀç ½ÇÇàÇØ¾ßµÉ ¸í·ÉÀ» ¸¶Ä¡°Ô µÇ¸é,  
            ´Ù½Ã instruction pointerÀÇ °ªÀ» »ìÇÇ°Ô µÈ´Ù. ÀÌ·¯ÇÑ ¸í·É½ÇÇà ¹æ½ÄÀº  
            ´ëºÎºÐÀÇ °æ¿ì¿¡ À¯È¿ÇÒ °ÍÀÌ´Ù. ±×·¯³ª jmpµîÀ» ÀÌ¿ëÇØ¼­ ¸í·ÉÀ»  
            Á¡ÇÁÇÏ°Ô µÉ°æ¿ì´Â ¾î¶»°Ô µÉ°¡ ? ÀÌ·² °æ¿ì¿¡ ÄÄÇ»ÅÍ´Â ´ÙÀ½ ¸í·ÉÀÌ ¾Æ´Ñ  
            ´Ù¸¥ À§Ä¡ÀÇ ¸í·ÉÀ» ½ÇÇàÇØ¾ß ÇÒ°ÍÀÌ´Ù. ÀÌ·²°æ¿ì ¿ì¸®´Â ÀϹÝÀûÀ¸·Î ¾Æ·¡¿Í  
            °°Àº Äڵ带 »ç¿ëÇÏ°Ô µÉ°ÍÀÌ´Ù.  
            <screen> 
jmp somewhere 
            </screen> 
            ÀÌ ÄÚµå´Â ¾Æ·¡ÀÇ ÄÚµå¿Í µ¿ÀÏÇÑ ÀÏÀ» ÇÑ´Ù.  
            <screen> 
movl $somewhere, %eip 
            </screen> 
            ¾Ë´Ù½ÃÇÇ <emphasis>somewhere</emphasis>´Â ÇÁ·Î±×·¥ÀÇ ¿µ¿ªÀ» ÂüÁ¶Çϱâ À§ÇÑ  
            »ó¡ÀÌ´Ù. ±×·¯¹Ç·Î %eip°¡ Á÷Á¢ somewhere¸¦ ÂüÁ¶Çϵµ·Ï ÇÏ´Â °ÍÀº Çã¿ëÀÌ  
            µÇÁö ¾Ê´Â´Ù. ±×·¯³ª '$'Ç¥½Ã¸¦ ÀÌ¿ëÇÏ°Ô µÉ°æ¿ì À̸¦ Çã¿ëÇÒ ¼ö ÀÖ°Ô µÈ´Ù. 
            ÀÌ´Â $Ç¥½Ã°¡ immediate mode addressiong¸ðµå·Î somewhere¸¦ °ªÀ¸·Î  
            ´Ù·ê ¼ö ÀÖµµ·Ï ÇØÁֱ⠶§¹®ÀÌ´Ù. ¸¸¾à '$'Ç¥½Ã¸¦ »ç¿ëÇÏÁö ¾ÊÀ» °æ¿ì  
            direct addressing mode°¡ µÇ´Âµ¥, ±×·²°æ¿ì somewhereÀÇ ÁÖ¼Ò¿¡ ÀÖ´Â °ªÀÌ 
            %eip·Î À̵¿ÀÌ µÇ¾î¹ö¸°´Ù. À̰ÍÀº ¿ì¸®°¡ ¿øÇÏ´Â °á°ú°¡ ¾Æ´Ï´Ù.   
            ¾Æ·¡´Â ½ÇÁ¦ ÀÚÁÖ »ç¿ëµÇ´Â ÄÚµå´Ù. 
            <screen> 
movl $0, $ebx 
            </screen> 
            0¾Õ¿¡ $Ç¥½Ã°¡ ºÙ¾î Àִµ¥, À̰ÍÀº immediate-mode instruction¸¦ ÀǹÌÇÏ´Â  
            °ÍÀ̹ǷΠ0À» ebx¿¡ Áý¾î ³Ö°Ô µÈ´Ù.  
            ¸¸¾à $Ç¥½Ã¸¦ Á¦°ÅÇÏ°Ô µÇ¸é direct addressing mode°¡ µÇ¾î¼­  
            0¹øÁÖ¼ÒÀÇ °ªÀÌ %ebx¿¡ ¹Ð¾î³Ö¾îÁö°Ô µÈ´Ù.  
            ¸Þ¸ð¸®ÀÇ ¾îµå·¹½Ì ¸ðµå¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº 2ÀåÀ» Âü°íÇϱ⠹ٶõ´Ù. 
        </para> 
    </section> 
    <section> 
        <title>¸®´ª½º ÇÁ·Î±×·¥¿¡¼­ÀÇ ¸Þ¸ð¸® ±¸Á¶</title> 
        <para> 
            À̹ø ÀåÀÇ ³»¿ëÀº konstantin BoldyshevÀÇ "Startup state of a Linux/i386 ELF binary"¹®¼­¿¡ ±â¹ÝÀ» µÎ°í ÀÖ´Ù.  
            °ü·ÃµÈ ¹®¼­´Â http://linuxassembly.org/start.htmlÀ» Âü°íÇϱ⠹ٶõ´Ù. 
        </para> 
        <para> 
            ´ç½ÅÀÌ ¸¸µç ÇÁ·Î±×·¥ÀÌ ¸Þ¸ð¸®¿¡ ÀûÀçµÉ¶§, °¢°¢ÀÇ .sectionÀÇ À̸§ÀÌ °¡¸®Å°´Â  
            ÁöÁ¡ÀÌ ·ÎµåµÈ´Ù. ½ÇÁ¦ÄÚµå (.text section)Àº 0x0848000 ÁÖ¼Ò¿¡  
            ·ÎµåµÈ´Ù. .data¼½¼ÇÀÌ ±×´ÙÀ½¿¡ À§Ä¡ÇÏ°Ô µÇ°í, ±×µÚ¿¡ .bss ¼½¼ÇÀÌ À§Ä¡ÇÏ°Ô µÈ´Ù.     
            .bss ´Â ¹öÆÛ¿µ¿ªÀ¸·Î ¿ì¸®°¡ »ç¿ëÇÒ ¸Þ¸ð¸®ÀÇ ¿µ¿ªÀ» ¹Ì¸®È®º¸ÇÒ ¼ö ÀÖ°Ô µµ¿ÍÁØ´Ù.  
            ¿ì¸®´Â run-timeÀü±îÁö´Â .bss¿¡ °ªÀ» ¹Ð¾î ³ÖÀ» ¼ö ¾ø´Ù. .data¼½¼ÇÀÇ °æ¿ì¿¡´Â  
            °ø°£À» ÇÒ´ç(.long µîÀ» ÀÌ¿ëÇØ¼­)ÇÏ°í °Å±â¿¡ ÇÊ¿äÇÑ °ªÀ» Áï½Ã ¹Ð¾î ³ÖÀ» ¼ö ÀÖ´Ù.  
            ÀÌ °ªµéÀº ÇÁ·Î±×·¥ÀÌ ÄÄÆÄÀϵǾ ¸¸µé¾î Áú¶§, ÇÁ·Î±×·¥ ÆÄÀÏ¿¡ Á÷Á¢ µé¾î°¡°Ô µÈ´Ù. 
            ¹Ý¸é .bss ¼½¼ÇÀÇ °æ¿ì ÇÁ·Î±×·¥ÀÌ ½ÇÇàÀü¿¡´Â ÃʱâÈ­ µÇÁö ¾Ê´Â´Ù. ±×·¯¹Ç·Î ÇÁ·Î±×·¥ 
            ÆÄÀÏ ÀÚü¿¡ ¾î¶°ÇÑ °ªÀ» ÀúÀåÇÒ ¼ö ¾ø´Ù. ¿©±â¿¡´Â ´ÜÁö ¾î´ÀÁ¤µµÀÇ ÀúÀå°ø°£ÀÌ ÇÊ¿äÇÑÁö 
            ¿¡ ´ëÇÑ Á¤º¸¸¸ÀÌ ÀÖÀ» »ÓÀÌ´Ù. ÀÌ¿¡ ´ëÇÑ ³»¿ëÀº µÚ¿¡ ÀÚ¼¼È÷ ¾Ë¾Æº¸·Ï ÇÒ°ÍÀÌ´Ù.  
        </para> 
        <para> 
            ¸¶Áö¸· ÀúÀ念¿ªÀº 0xbffffffffÀÇ ÁÖ¼Ò¸¦ °¡Áø´Ù. .text, .data, .bass ¼½¼ÇÀº 0x0804800 
            ÀÌÈÄ¿¡ À§Ä¡ÇÏ°Ô µÈ´Ù. .start ¼½¼ÇÀº À§ÀÇ ÁÖ¼Ò¿µ¿ª »çÀÌ¿¡ À§Ä¡ÇÏ°Ô µÇ¸ç, 
            óÀ½ µÎ¹ÙÀÌÆ®´Â 0À¸·Î ä¿öÁö°í ±×´ÙÀ½¿¡ ÇÁ·Î±×·¥ÀÇ À̸§ÀÌ ¿Â´Ù. ÇÁ·Î±×·¥ÀÇ À̸§ÀÇ  
            ³¡Àº NULL ¹®ÀÚ (\0)±îÁö·Î °áÁ¤µÈ´Ù. ÇÁ·Î±×·¥À̸§ ´ÙÀ½¿¡´Â ȯ°æº¯¼ö(12)°¡ À§Ä¡ÇÏ°Ô  
            µÈ´Ù. ±×´ÙÀ¸ ÇÁ·Î±×·¥ÀÇ ÀÎÀÚ°¡ ¿À°Ô µÈ´Ù. ÇÁ·Î±×·¥ÀÎÀÚ´Â ÇÁ·Î±×·¥À» ½ÇÇà½Ãų ¶§  
             À¯Àú¿¡ ÀÇÇØ¼­ ÇÁ·Î±×·¥¿¡ Àü´ÞµÇ´Â °ªÀÌ´Ù. ¿¹¸¦ µé¾î¼­ "maximum"À̶õ ÇÁ·Î±×·¥À»  
            ½ÇÇà½ÃŲ´Ù¶ó°í Çϸé, ./maximum À» ŸÀÌÇÎ ÇØ¼­ ½ÇÇàÇÏ°Ô µÇ´Âµ¥ ./maximum ÀÌ ÇÁ·Î±×·¥ 
            ÀÎÀÚ°¡ µÈ´Ù. À̰æ¿ìÀ¸³Ù ´ÜÁö ÇϳªÀÇ ÀÎÀÚ°¡ ÇÁ·Î±×·¥À¸·Î Àü´ÞµÉ °ÍÀÌ´Ù.  
            ÇÏÁö¸¸ Çʿ信 µû¶ó¼­ ."/maximum 48 59"¿Í °°ÀÌ ÇϳªÀÌ»óÀÇ ÀÎÀÚ°¡ µé¾î°¥ ¼öµµ ÀÖ´Ù. 
            ´ÙÀ½À¸·Î stack(12) ¿µ¿ªÀÌ ÀÖ´Ù. ½ºÅÃÀº Àӽ÷ΠÀڷḦ ÀúÀåÇϱâ À§ÇÑ ¿µ¿ªÀ¸·Î  
            ÇÊ¿äÇÑ µ¥ÀÌÅ͸¦ ¹Ð¾î³Ö°Å³ª °¡Á®¿Ã ¼ö ÀÖ´Ù. ½ºÅÃÀÇ Á¦ÀÏ Ã³À½(²À´ë±â)´Â %esp¸¦  
            ÀÌ¿ëÇØ¼­ °¡¸®Å³ ¼ö ÀÖÀ¸¸ç, °ªÀ» Áõ°¡½ÃÅ´À¸·Î½á, ½ºÅÃÀ» Ž»öÇÒ ¼ö ÀÖ´Ù. ½ºÅÿ¡  
            ¾î¶² °ªÀ» ÀÔ·ÂÇϸé, ½ºÅÃÀº ÀÚ¿¬½º·´°Ô ´ÙÀ½ °ªÀ» °¡¸®Å²´Ù. Áï °ªÀ» ¹Ð¾î³Ö°Ô µÇ¸é  
            ½ºÅÃÆ÷ÀÎÅͰ¡ °¨¼ÒÇÏ°í °ªÀ» °¡Á®¿À¸é(pop) ½ºÅÃÆ÷ÀÎÅͰ¡ Áõ°¡ÇÏ´Â ¹æ½ÄÀÌ´Ù.  
            <screen> 
pushl %eax 
            </screen> 
            À§ÀÇ ÄÚµå´Â ¾Æ·¡¿Í µ¿ÀÏÇÏ´Ù. 
            <screen> 
movl %eax, (%esp) 
subl $4, %esp 
            </screen> 
            %eax´Â 4¹ÙÀÌÆ®ÀÇ Å©±â¸¦ °¡Áø´Ù. À̰ÍÀ» ½ºÅÿ¡ ¹Ð¾î ³Ö¾úÀ¸´Ï, ´ÙÀ½°ªÀ» ³ÖÀ» ¶§¿¡´Â 
            4¹ÙÀÌÆ® ¸¸Å­ µÚ·Î ¹Ð·Á¼­ °ªÀ» ³Ö¾î¾ß ÇÒ °ÍÀÌ´Ù. À̸¦ À§Çؼ­ sublÀ» ÀÌ¿ëÇØ¼­ %esp¿¡¼­ 
            4¸¸Å­À» »©ÁÖ¾ú´Ù. 
            <screen> 
popl %eax 
            </screen> 
            À§ÀÇ ÄÚµå´Â popÀ» ÇѰæ¿ìÀε¥, ¾Æ·¡¿Í µ¿ÀÏÇÏ´Ù. 
            <screen> 
movl (%esp), %eax 
addl $4, %esp 
            </screen> 
            %esp¿¡ °ýÈ£°¡ ÀÖ´Â ÀÌÀ¯´Â %espÀÇ ÁÖ¼Ò°ªÀÌ ¾Æ´Ñ %esp°¡ °¡¸®Å°´Â °÷ÀÇ °ªÀ» °¡Á®¿À±æ  
            ¿øÇϱ⠶§¹®ÀÌ´Ù. 4¹ÙÀÌÆ® Å©±âÀÇ °ªÀ» ²¨³»¿Ô±â ¶§¹®¿¡,  
            %esp¿¡¼­ 4¸¸Å­À» ´õÇØÁ༭ ½ºÅÃÀÇ ´ÙÀ½ °ªÀ» °¡¸®Å°µµ·Ï ÇØÁÖ¾ú´Ù. 
        </para> 
        <para> 
            ÀÌ·¸°Ô ÇØ¼­ stack´Â °ªÀ» °¨¼Ò½Ã۰í, .bss¼½¼ÇÀº °ªÀ» Áõ°¡½ÃŲ´Ù´Â °ÍÀ» ¾Ë°Ô µÇ¾ú´Ù.  
            À̵é Áß°£¿µ¿ªÀº break ¶ó°í ºÒ¸®¿ì¸ç, Ä¿³ÎÀº breakÀ» ¹þ¾î³ª¼­ ¼­·ÎÀÇ ¿µ¿ªÀ» ħ¹üÇÏÁö 
            ¾Êµµ·Ï °ü¸®¸¦ Çϰí ÀÖ´Ù. ¸¸¾à ¼­·ÎÀÇ ¿µ¿ªÀ» ħ¹üÇÏ°Ô µÇ¸é ÇÁ·Î±×·¥Àº  
            "segmentation falut" ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇϰí Á¾·áµÈ´Ù. ¸¶Âù°¡Áö·Î ´ç½ÅÀÇ ÇÁ·Î±×·¥ÀÌ 
            0x08048000ÀÌÀüÀÇ µ¥ÀÌÅÍ¿µ¿ª¿¡ Á¢±ÙÇÒ°æ¿ì¿¡µµ µ¿ÀÏÇÑ ¿¡·¯¸Þ½ÃÁö¿Í ÇÔ²² Á¾·á°¡  
            µÈ´Ù. 
        </para> 
        <para> 
 
        </para> 
    </section> 
    <section> 
        <title>Every Memory Address is Lie</title> 
        <para> 
            ±×·³ ¿Ö ÄÄÇ»ÅÍ´Â break ¿µ¿ªÀ» ¿¢¼¼½º ÇÏ´Â°É Çã¿ëÇÏÁö ¾Ê´Â °ÍÀϱî ? 
            À̵¥ ´ëÇÑ ´äÀ» ¾ò±â À§Çؼ­´Â ÄÄÇ»ÅͰ¡ ¸Þ¸ð¸®¸¦ ¾î¶»°Ô ´Ù·ç´ÂÁö¿¡ ´ëÇÑ 
            Á»´õ ±íÀº ÀÌÇØ°¡ ÇÊ¿äÇÏ´Ù. 
        </para> 
        <para> 
            ¿©±â¿¡¼­ ¿©·¯ºÐÀº ¸ðµç ÇÁ·Î±×·¥ÀÌ °°Àº ¸Þ¸ð¸® ¿µ¿ªÀ» »ç¿ëÇÏ´ÂÁö¿¡ ´ëÇÑ 
            ±Ã±ÝÁõÀÌ »ý±æ °ÍÀÌ´Ù. ±×·±µ¥ ÀÌ·¸°Ô µÉ°æ¿ì ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ µ¥ÀÌÅ͸¦  
            µ¤¾î¾²°Å³ª »èÁ¦ÇÏ´Â°Ô °¡´ÉÇØÁú °ÍÀ̹ǷÎ, ÀÌ´Â ÇÁ·Î±×·¥ÀÇ ÀÛµ¿¿¡  
            Ä¡¸íÀûÀÎ ¿µÇâÀ» ³¢Ä¡°Ô µÉ °ÍÀÌ´Ù. ¾Õ ÀåÀ» º¸´õ¶óµµ, ¸ðµç ÇÁ·Î±×·¥Àº µ¿ÀÏÇÑ  
            ÁÖ¼Ò¿¡¼­ ½ÃÀÛÇÏ´Â °ÍÀ¸·Î º¸ÀδÙ.  
            ±×·¯³ª ½ÇÁ¦ ÀÌ·±ÀÏÀº ¹ß»ýÇÏÁö ¾Ê´Â´Ù. ´ç½ÅÀÇ ÇÁ·Î±×·¥Àº ´ÜÁö virtual_memory(12) ¿¡¸¸  
            Á¢±Ù °¡´ÉÇϱ⠶§¹®ÀÌ´Ù. ¿©·¯ºÐÀÌ »ç¿ëÇÏ´Â PC(12)¸¦ Æ÷ÇÔÇÑ °ÅÀÇ ´ëºÎºÐÀÇ ÇÁ·Î±×·¥Àº  
            ¹°¸®ÀûÀÎ RAM(12)À» °¡Áö°í ÀÖÀ» °ÍÀÌ´Ù. º¸Åë 256¿¡¼­ 1024Megabyte Á» ´õ ºÎÀ¯ÇÑ °æ¿ì  
            ±× ÀÌ»óÀÇ ·¥À» °¡Áö°í ÀÖÀ» °ÍÀÌ´Ù. ¿ì¸®°¡ ¸»ÇÏ´Â ¹°¸®Àû ¸Þ¸ð¸® ÁÖ¼Ò¶õ ÀÌ·¯ÇÑ ¸Þ¸ð¸®ÀÇ 
            Ĩ¿¡ Á÷Á¢ÀûÀ¸·Î ºÎ¿©µÈ ¿µ¿ªÀ» ¸»ÇÑ´Ù. ±×·¸´Ù¸é °¡»ó ¸Þ¸ð¸®¶õ ¹«¾ùÀΰ¡ ?  
            °¡»óÀÇ ¸Þ¸ð¸®¶õ ÇÁ·Î±×·¥ÀÌ »ý°¢ÇÏ´Â ¸Þ¸ð¸®¶ó°í °£´ÜÈ÷ »ý°¢ÇÒ ¼ö ÀÖ´Ù. 
            ¿©·¯ºÐÀÌ ÇÁ·Î±×·¥À» ½ÇÇà½Ã۸é, ÇÁ·Î±×·¥ÀÌ ·ÎµåµÇ±â Àü¿¡ Linux(12)´Â ¹°¸®Àû  
            ¸Þ¸ð¸®¿µ¿ª¿¡¼­ »ç¿ë°¡´ÉÇÑ ºñ¾îÀÖ´Â Áö¿ªÀ» ã¾Æ³»¾î¼­, ÇÒ´çÇØ ÁÖ°í,  
            ÀÌ ÇÒ´çµÈ ¸Þ¸ð¸®ÀÇ ÁÖ¼Ò¸¦ 0x0804800 À̶ó°í ¾Ë·ÁÁÖ°Ô µÈ´Ù. Áï ÇÁ·Î±×·¥¸¶´Ù ÀÚ½ÅÀÇ  
            µ¶¸³ÀûÀÎ °¡»óÀÇ °ø°£À» ¸¸µé¾î ÁÖ´Â °ÍÀÌ´Ù.  
        </para> 
        <para> 
            ÀÌ·¸°Ô ÇÁ·Î±×·¥Àº ÀڽŸ¸ÀÇ °¡»óÀÇ °ø°£À» ¸¸µé°í, ÀÌ °ø°£¿¡¼­ ³î°Ô µÈ´Ù. 
            ´ç½ÅÀÇ ÄÄÇ»ÅÍ¿¡¼­ ½ÇÇàµÇ´Â ¸ðµç ÇÁ·Î±×·¥Àº ÀÌ °¡»óÀÇ °ø°£ÀÇ 0x0804800 ÁÖ¼Ò¿¡ 
            ¿Ã·ÁÁö°í, ½ºÅÃÀº 0xbffffff¿¡¼­ ½ÃÀÛÀÌ µÈ´Ù. ÀÌ·¯ÇÑ °¡»óÀÇ °ø°£¿¡ ÁÖ¾îÁö´Â  
            °¡»óÀÇ ÁÖ¼Ò¸¦ virtual address¶ó°í ÇÑ´Ù. ¸ðµç ÇÁ·Î±×·¥Àº °¡»óÀÇ ÁÖ¼Ò¸¦ ÀÌ¿ëÇØ¼­ 
            µ¥ÀÌÅ͸¦ ¾²°Å³ª ÀÐÁö¸¸, ½ÇÁ¦ µ¥ÀÌÅÍ´Â °¡»óÀÇ ÁÖ¼Ò¿¡ ¸ÊÇεǴ ¹°¸®ÀûÀÎ ÁÖ¼Ò¿¡ 
            ¾²¿©Áö°Ô µÈ´Ù. ÀÌ·¸°Ô °¡»óÀÇ ÁÖ¼Ò¸¦ ¹°¸®ÀûÀÎ ÁÖ¼Ò¿¡ ´ëÀÀ½ÃÄÑÁÖ´Â °úÁ¤À»  
            <emphasis>mapping</emphasis> À̶ó°í ÇÑ´Ù. 
            ÀÌÀüÀå¿¡¼­ ¿ì¸®´Â bss¿Í stack»çÀÌÀÇ ¸Þ¸ð¸® ¿µ¿ªÀ» break¶ó°í Á¤ÀÇÇÑ´Ù°í ¹è¿ü¾ú´Ù.  
            ±×·¯³ª ÀÌ·¯ÇÑ break°¡ Á¸ÀçÇÏ´Â ÀÌÀ¯¿¡ ´ëÇØ¼­ ¼³¸íÇÏÁø ¾Ê¾Ò´Âµ¥, ±× ÀÌÀ¯¿¡ ´ëÇØ¼­ 
            ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ. 
            °¡»ó¸Þ¸ð¸® ¼¼±×¸ÕÆ®´Â ±âº»ÀûÀ¸·Î ¿Ïº®ÇÏ°Ô ¹°¸®Àû ¸Þ¸ð¸® ¼¼±×¸ÕÆ®¿Í ¸ÊÇÎÀ» ½Ãų ¼ö´Â  
            ¾ø´Ù. ¸ÊÇ뵃 ½Ã°£°ú °ø°£À» Á¤È®È÷ °í·ÁÇÒ ¼ö ¾ø±â ¶§¹®ÀÌ´Ù. ±×·¯´Ù º¸´Ï bss¿Í stack  
            »çÀÌ¿¡ °¡»ó¸Þ¸ð¸® ÁÖ¼Ò·Î ¸ÅÇÎÀÌ µÇÁö ¾Ê´Â ¿µ¿ªÀÌ »ý°Ü³¯ ¼ö ÀÖ´Ù. ÀÌ ºÎºÐÀº  
            ÇÁ·Î±×·¥¿¡¼­ Á¦¾îÇÒ ¼ö ¾ø´Â ¿µ¿ªÀ̱⠶§¹®¿¡ break¿µ¿ªÀÌ µÇ´Â °ÍÀÌ´Ù.  
        </para> 
        <para> 
            °¡»ó ¸Þ¸ð¸®¸¦ ÀÌ¿ëÇÔÀ¸·Î ½á ¾òÀ» ¼ö ÀÖ´Â ´Ù¸¥ À̵浵 ÀÖ´Ù. ±»ÀÌ ¹°¸®ÀûÀÎ ¸Þ¸ð¸®°¡  
            ¾Æ´Ñ Çϵåµð½ºÅ©µîµµ ¸Þ¸ð¸®¿µ¿ªÀ¸·Î »ç¿ëÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù. ¸ÊÇθ¸ ½ÃÄÑÁÖ¸é °£´ÜÇÑ  
            ¹®Á¦´Ù. ´ç½ÅÀÇ ÄÄÇ»ÅͰ¡ 16MegaÀÇ ¸Þ¸ð¸®¸¦ °¡Áö°í ÀÖ´Ù°í °¡Á¤Çغ¸µµ·Ï ÇÏÀÚ.  
            ÀÌÁß 8Mega Á¤µµ´Â Linux¿Í ¸î °¡Áö ±âº»ÀûÀÎ ÀÀ¿ëÇÁ·Î±×·¥µéÀÌ »ç¿ëÇϰí ÀÖ´Ù. 
            ±×¸®°í ´ç½ÅÀº gimp¸¦ ½ÇÇà½ÃÄѼ­ ±×·¡ÇÈ ÀÛ¾÷À» Çϱ⠿øÇϴµ¥, ÃÖ¼ÒÇÑ 20Mega Á¤µµÀÇ  
            °ø°£À» ÇÊ¿ä·Î ÇÑ´Ù. ±×·±µ¥ ½ÇÁ¦ ³²Àº °ø°£Àº 8Mega Á¤µµ·Î gimp¸¦ ½ÇÇà½Ãų¸¸ÇÑ ¸Þ¸ð¸® 
            °ø°£ÀÌ ³²¾ÆÀÖÁö¸¦ ¾Ê´Ù. ±×·¯³ª ¿ì¸®´Â ¹°¸®Àû ¸Þ¸ð¸® °ø°£ÀÌ ºÎÁ·ÇÏ´õ¶óµµ ÇÁ·Î±×·¥À»  
            ½ÇÇà½ÃŰ´Â ¹æ¹ýÀ» ¾Ë°í ÀÖ´Ù. swap ÆÄƼ¼Ç(ȤÀº ½º¿ÒÆÄÀÏ)À» ÀÌ¿ëÇÏ¸é µÈ´Ù. 
            ±×·¯¸é LinuxÀÇ °¡»ó¸Þ¸ð¸® °ü¸® ÇÁ·Î¼¼½º´Â ºÎÁ·ÇÑ ¾ç¸¸Å­À» swap¿µ¿ª¿¡¼­ °¡Á®¿Í¼­ ¾²°Ô µÇ¹Ç·Î 
            ¹®Á¦¾øÀÌ gimp¸¦ ½ÇÇà½Ãų ¼ö ÀÖ°Ô µÈ´Ù. ÀÌ·¸°Ô °¡»ó ¸Þ¸ð¸®±â¹ýÀ» Àû¿ëÇÔÀ¸·Î½á, 
            ÇÁ·Î±×·¥Àº ÄÄÇ»ÅͰ¡ Á¦°øÇÏ´Â ÀÌ»óÀÇ ¸Þ¸ð¸® °ø°£À» »ç¿ëÇÒ ¼ö ÀÖ°Ô µÈ´Ù.  
        </para> 
        <para> 
            ¸Þ¸ð¸®´Â <emphasis>pages</emphasis>¶ó´Â ±×·ìÀ¸·Î ¹­¿©¼­ ³ª´µ°Ô µÈ´Ù. x86ÇÁ·Î¼¼½º¿¡¼­  
            ½ÇÇàµÇ´Â ¸®´ª½º¿¡¼­ ÇÑ ÆäÀÌÁö´Â 4096 byteÀÇ Å©±â¸¦ °¡Áø´Ù. ¸ðµç ¸Þ¸ð¸®´Â ÆäÀÌÁö´ÜÀ§·Î  
            ¸ÅÇÎÀÌ µÈ´Ù.  
        </para> 
    </section> 
    <section> 
        <title>Getting More Memory</title> 
        <para> 
            ¿ì¸®´Â ¸®´ª½ºÀÇ °¡»ó¸Þ¸ð¸®°¡ ¸®¾ó¸Þ¸ð¸®¿Í swap¸¦ ÇÔ²² ÀÌ¿ëÇϰí ÀÖ´Ù´Â °ÍÀ» ¾Ë°í ÀÖ´Ù. 
            ¸¸¾à ´ç½ÅÀÌ ¸¸µç ÇÁ·Î±×·¥ÀÌ ¾ÆÁ÷ ¸ÊÇεÇÁö ¾ÊÀº °¡»ó¸Þ¸ð¸®¸¦ Á¢±ÙÇÏ·Á°í ÇÑ´Ù¸é,  
            segmentation fault ¿¡·¯¸Þ½ÃÁö¸¦ Ãâ·ÂÇϸ鼭 Á¾·áµÇ´Â °É È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. 
            ÀÌ·¯ÇÑ ¹®Á¦´Â ¿©·¯ºÐÀÌ data section¿¡ ¿©·¯ºÐÀÌ ÇÊ¿äÇÑ ¸¸Å­ÀÇ ÃæºÐÇÑ ¸Þ¸ð¸® °ø°£À» ¹Ì¸®  
            È®º¸Çϵµ·Ï ÇØ¼­ break point¸¦ ħ¹üÇÏÁö ¾Êµµ·Ï Çϸé ÇØ°áÀÌ °¡´ÉÇÏ´Ù.  
            ±×·¯³ª ¾î´ÀÁ¤µµÀÇ ¸Þ¸ð¸® °ø°£À» ÇÒ´çÇØ¾ß ÇÒÁö ¾Ë¾Æ³»±â Èûµç °æ¿ì°¡ ¹ß»ýÇÑ´Ù.  
            ¿¹¸¦ µé¾î¼­ vi(12)¿Í °°Àº ÆíÁý±â¸¦ ¸¸µé°æ¿ì, ÆíÁý±âÀÇ »ç¿ëÀÚ°¡ ¾î´ÀÁ¤µµÀÇ ¹®ÀÚ¸¦ ¾²°Ô µÉÁö  
            ¾Ë ¼ö ¾ø°Ô µÈ´Ù. ÇÑÁÙÁ¤µµ·Î ÆíÁýÀ» ¸¶Ä¡°í ÀúÀåÇÒ ¼ö ÀÖÁö¸¸, ¼ö½Ê¸Þ°¡ ÀÌ»óÀÇ µ¥ÀÌÅ͸¦  
            ¾µ ¼ö µµ ÀÖ´Ù. ¹°·Ð ÇÑ 1±â°¡ Á¤µµ ¸Þ¸ð¸®¸¦ ÇÒ´çÇØ ¹ö¸®´Â °æ¿ì¸¦ »ý°¢Çغ¼ ¼ö ÀÖÁö¸¸ ´ÜÁö 80 
            ¹ÙÀÌÆ®ÀÇ ¹®ÀÚ¸¦ ¾²±â¸¦ ¿øÇÒ°æ¿ì ¾öû³­ ³¶ºñ°¡ ¹ß»ýÇÏ°Ô µÈ´Ù.  
            Linux(12)´Â ÀÌ·¯ÇÑ ¹®Á¦ÀÇ ÇØ°áÀ» À§Çؼ­ break point¸¦ À̵¿ÇÒ ¼ö ÀÖ°Ô²û ¼ö´ÜÀ» Á¦°øÇϰí ÀÖ´Ù.  
            ¸¸¾à ´õ ¸¹Àº ¸Þ¸ð¸® °ø°£ÀÌ ÇÊ¿äÇÒ °æ¿ì À̸¦ ¸®´ª½º¿¡ ¿äûÀ» Çϸé, ¸®´ª½º´Â ÇÊ¿äÇÑ ¸¸Å­ÀÇ  
            ¸Þ¸ð¸®¸¦ ¸ÊÇνÃÄÑÁÖ°í break point¸¦ ÀÌ¿¡ ¸Â°Ô À̵¿½ÃÄÑ ÁØ´Ù.  
        </para> 
        <para> 
            ÀÌ·¸°Ô ¸Þ¸ð¸®¸¦ ÃßÀûÇϸ鼭 break point¸¦ º¯°æ½ÃŰ´Â ¹æ¹ýÀº ÇѰ¡Áö ¹®Á¦Á¡À» °¡Áö°í ÀÖ´Ù. 
            ¿¹¸¦ µé¾î ¿©·¯ºÐÀÌ ÆÄÀÏÀ» ¿­¾î¼­ µ¥ÀÌÅ͸¦ Àоîµé¿´´Ù¸é, break point¸¦ º¯°æ½ÃÄѼ­ ÇÊ¿äÇÑ  
            ¸¸Å­ÀÇ ¸Þ¸ð¸® °ø°£À» È®º¸ÇÏ°Ô µÉ°ÍÀÌ´Ù. ¿©±â¿¡¼­ »õ·Î¿î ÆÄÀÏÀ» ÀоîµéÀ̱â À§Çؼ­´Â  
            ¶Ç ´Ù½Ã break pointÀÇ À̵¿ÀÌ ÇÊ¿äÇÏ°Ô µÈ´Ù. ÀÌ break point´Â ù¹øÂ° ÆÄÀÏÀÇ ¿µ¿ªÀ» ¹þ¾î³­  
            À§Ä¡¿¡ Á¸ÀçÇÏ°Ô µÉ °ÍÀ̹ǷÎ, ¸ÊÇÎÀº µÇ¾úÁö¸¸ »ç¿ëÇÏÁö ¾Ê´Â ³²´Â °ø°£ÀÌ »ý¼ºµÇ°Ô µÈ´Ù. 
            ÀÌ¹Ì ¸ÊÇÎÀÌ µÇ¾îÀÖÀ¸¹Ç·Î, ´Ù¸¥ ÇÁ·Î±×·¥Àº ÀÌ ¿µ¿ªÀ» »ç¿ëÇÒ ¼ö ¾ø°Ô µÈ´Ù.  
            ¸¸¾à ÀÌ·¯ÇÑ ÀÏÀÌ °è¼ÓÀûÀ¸·Î ¹Ýº¹µÈ´Ù¸é, ¸Þ¸ð¸® ´©¼ö Çö»óÀÌ ¹ß»ýÇÏ°Ô µÉ °ÍÀÌ´Ù. 
            ±×·¡¼­ ¸Þ¸ð¸® °ü¸®°¡ ÇÊ¿äÇÏ°Ô µÈ´Ù. ¸Þ¸ð¸® °ü¸®´Â '''allocate'''¿Í '''deallocate'''ÀÇ µÎ°³ÀÇ  
            ±âº»ÀûÀÎ ÇÔ¼ö¸¦ ÅëÇØ¼­ ÀÌ·ç¾îÁö°Ô µÈ´Ù. ¸Þ¸ð¸®°¡ ÇÊ¿äÇÏ´Ù¸é allocate¸¦ È£ÃâÇØ¼­ ÇÊ¿äÇÑ  
            °ø°£À» ÇÒ´ç¹Þ°í, ÇÊ¿ä ¾øÀ» °æ¿ì deallocate¸¦ È£ÃâÇØ¼­ À̸¦ ¹ÝȯÇÏ°Ô µÈ´Ù. 
        </para> 
    </section> 
    <section> 
        <title>¸Þ¸ð¸® °ü¸®</title> 
        <para> 
            ±×·³ ¾î¶²½ÄÀ¸·Î ¸Þ¸ð¸®¸¦ °ü¸®ÇÏ´ÂÁö¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ. 
<screen> 
#  
.section .data 
 
######### GLOBAL VARIABLE ########### 
heap_begin: 
.long 0 
 
current_break: 
.long 0 
 
###### CONSTANTS ######## 
.equ UNAVAILABLE, 0 
.equ AVAILABLE, 1 
.equ BRK, 45                # brk(2) System Call 
.equ LINUX_SYSTEMCALL, 0x80 
 
###### STRCUTURE INFORMATION ####### 
.equ HEADER_SIZE, 8 
.equ HDR_AVAIL_OFFSET, 0 
.equ HDR_SIZE_OFFSET, 4 
.section .text 
 
######### FUNCTION ########### 
## allcate_init 
# PURPOSE : call this function initialize the functions 
#           specifically, this sets heap_begin and current_break. 
#           this has no parameters and no return value. 
.globl allocate_init 
.type allocate_init, @function 
 
allocate_init: 
pushl %ebp 
movl  %esp, %ebp 
 
# brk(2) system call 
movl $BRK, %eax 
movl $0, %ebx 
int $LINUX_SYSCALL 
 
incl %eax    # %eax now has last valid  
             # address, and we want the memory 
             #location after that 
 
movl %eax, current_break   #store the current break 
movl %eax, heap_begin      #store the current break as our 
                           #first address. this cause the allocate function 
                           # to get more memory from Linux the first 
                           #time it is run 
movl %ebp, %esp            #exit function 
popl %ebp 
ret 
##### END OF FUNCTION ##### 
 
##allocate## 
#PURPOSE: This function is used to grab a section of memory. 
#         It checks to see if there are any free blocks, and, 
#         if not, it asks Linux for a new one. 
#PARAMETERS: This function has one parameter - the size of the memory  
#            block we want allocate  
#RETURN VALUE: 
#         This function returns the address of allocated 
#         memory in %eax. if there is no memory available, it will 
#         return 0 in %eax 
##### PROCESSING ###### 
#Variables used; 
# 
#  %ecx - hold the size of requested memory 
#  %eax - current memory segment being examined 
#  %ebx - current break position 
#  %edx - size of current memory segment 
# We scan through each memory segment starting with heap_begin. 
# We look at the size of each one, and if it has been allocated. 
# If it's big enough for the requested size. and its available, 
# if grabs that one. If it does not find a segment large enough, 
# it asks Linux for more memory. In that case, it moves 
# current_break up 
.globl allocate 
.type allocate,@function 
.equ ST_MEM_SIZE, 8 
 
allocate: 
pushl %ebp 
movl  %esp, %ebp 
 
movl ST_MEM_SIZE(%ebp), %ecx # %ecx will hold the size we are 
                             # looking for 
 
movl heap_begin, %eax        # %eax will hold the current search  
                             # location 
movl current_break, %ebx     # %ebx will hold the current break point 
 
alloc_loop_begin:            #here we iterate through each 
                             #memory segment 
cmpl %ebx, %eax              #need more memory if these are equal 
je move_break 
 
movl HDR_SIZE_OFFSET(%eax), %edx  #grab the size of this memory 
cmpl $UNAVAILABLE, HDR_AVAIL_OFFSET(%eax)  # If the space unavailable, go the 
je next_location                           #next one 
 
cmpl %edx, %ecx              #If the space is avalable, compare 
jle allocate_here            #the size to the needed size. If its 
                             #big enough, go to allocate_here 
 
#may want to add code here to 
#combine allocations 
 
next_location: 
addl $HEADER_SIZE, %eax      #The total size of the memory segment 
addl $edx, $eax              #is the sum of the size requested 
                             #(currently stored in %edx), plus another 
                             #8 storage locations for the header 
                             #(4 for the AVAILABLE/UNAVAILABLE flag, 
                             #and 4 for the size of the segment). so 
                             #adding %edx and $8 to %eax will get 
                             #the address of the next memory segment 
 
jmp alloc_loop_begin 
 
allocate_here: 
 
movl $UNAVAILABLE, HDR_AVAIL_OFFSET(%eax) #mark space as unavailable 
 
addl $HEADER_SIZe, %eax 
 
movl %ebp, %esp 
popl %ebp 
ret 
 
move_break: 
 
addl $HEADER_SIZE, %ebx      #noew we need to increase %ebx to 
addl %ecx, %ebx              #where we _want_ memory to end, so we 
                             #add space for the headers structure 
                             #add space to the break for 
                             #the data requested 
 
                             #now its time to ask Linux for more 
                             #memory 
 
pushl %eax                   #save needed registers 
pushl %ecx 
pushl %ebx 
 
movl %BRK, %eax 
 
int $LINUX_SYSCALL 
 
cmpl $0, %eax 
 
jre error 
 
 
popl %ebx                   #restore saved registers 
popl %ecx 
popl %eax 
 
movl $UNAVAILABLE, HDR_AVAIL_OFFSET(%eax) #set this memory as 
                                          #unavailable, since we're about to 
                                          #give it away 
movl %ecx, HDR_SIZE_OFFSET(%eax)          #set the size of the memory 
addl $HEADER_SIZE, %eax                   #move %eax to the actual start of 
                                          #usable memory. %eax now holds the 
                                          #return value 
movl %ebx, current_break 
 
movl %ebp, %esp 
popl %ebp 
 
ret 
 
error: 
movl $0, %eax 
movl %ebp, %esp 
popl %ebp 
ret 
 
####### END OF FUNCTION ####### 
 
 
 
## deallocate ## 
# PURPOSE : The Purpose of this function is to give back 
#           a segment of memory to the poll after we're done 
#           using it.  
# 
# PARAMETERS : The only parameter is the address of the memory we want to  
#              return to the memory pool 
# RETURN VALUE : There is no return value  
# PROCESSING : 
#          If you remmember, we actually hand program the 
#          start of the memory that they can use, which is 
#          8 storage locations after the actual start of the 
#          memory segment. All we have to do is go back 
#          8 locations and mark that memory as available, 
#          so that the allocate function knows it can use it. 
.globl deallocate 
.type deallocate, @function 
.equ ST_MEMORY_SEG, 4    # stack position of  
deallocate:  
                         # since the function is so simple, we 
                         #don't need any of the fancy function 
                         # stuff 
movl ST_MEMORY_SEG(%esp), %eax  # get the address of the memory to free 
                                #(normally this is 8(%ebp), buf since 
                                #we didn't push %ebp or move %esp to 
                                #%ebp, we can just do 4(%esp) 
subl $HEADER_SIZE, %eax         #get the pointer to real beginning 
                                #of the memory 
movl $AVAILABLE, HDR_AVAIL_OFFSET(%eax) #mark it as available 
 
ret 
####### ENF OF FUNCTION ########## 
</screen> 
        À§ ÄÚµå´Â ±× ÀÚü°¡ ¿ÏÀüÇÑ ÇÁ·Î±×·¥ÀÌ ¾Æ´Ï´Ù. ´ÜÁö program ¼½¼Ç¸¸ °¡Áö°í ÀÖÀ¸¸ç, ¶§¹®¿¡ _start ½Éº¼À» 
        °¡Áö°í ÀÖÁö ¾Ê´Ù´Â Á¡À» ÁÖ¸ñÇϱ⠹ٶõ´Ù. ±×·¯¹Ç·Î ´Üµ¶À¸·Î ½ÇÇàµÉ ¼ö ¾øÀ¸¸ç, ´Ù¸¥ Äڵ忡 ¸µÅ©µÇ¾î¼­ 
        ÇØ´ç ÇÔ¼ö¸¦ È£ÃâÇÏ´Â Çü½ÄÀ¸·Î¸¸ »ç¿ëµÉ ¼ö ÀÖ´Ù. ¾Æ¸¶µµ C¸¦ ÀÌ¿ëÇØ¼­ ´ÙÁß¼Ò½º ÄÄÆÄÀÏÀ» ÇØº¸¾Ò´Ù¸é ½±°Ô 
        ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ³ªÁß¿¡ ´Ù·çµµ·Ï ÇÒ °ÍÀÌ´Ù. ÀÏ´ÜÀº ´ÙÀ½°ú °°ÀÌ objectÇü½ÄÀ¸·Î  
        ¸¸µéµµ·Ï ÇÑ´Ù.        
<screen> 
# as alloc.s -o alloc.o 
</screen> 
        ÀÌÁ¦ Äڵ带 ºÐ¼®ÇØ º¸µµ·Ï ÇÏÀÚ.  
        </para> 
    </section> 
    <section> 
        <title>º¯¼ö¿Í »ó¼öµé</title> 
        <para> 
<screen> 
heap_begin: 
.long 0 
 
current_break: 
.long 0 
</screen> 
            À§ ÄÚµå´Â ÇÁ·Î±×·¥ÀÇ Ã¹ ºÎºÐÀ¸·Î heap¿µ¿ªÀ» °¡¸®Å°±âÀ§Çؼ­ »ç¿ëÇÑ´Ù. 
            ¾î¼Àºí¸® ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¶§ ¿ì¸®´Â heap¿µ¿ªÀÇ ½ÃÀÛÀ§Ä¡¸¦ ¾Ë ¼ö°¡ ¾øÀ¸¸ç,  
            ¶§¹®¿¡ break point¸¦ °áÁ¤ÇÒ ¼öµµ ¾ø´Ù. ±×·¡¼­ 0À¸·Î ÀÏ´Ü Ã¤¿öµÎ¾ú´Ù. ÁÖ¼®À» º¸¸é 
            <emphasis>global variable</emphasis>(Àü¿ªº¯¼ö)¶ó°í ÇØµÐ°É º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÇÁ·Î±×·¥À» 
            ÀÛ¼ºÇÏ´Ùº¸¸é Àü¿ªº¯¼ö³ª Áö¿ªº¯¼ö¶ó´Â ¸»À» ¸¹ÀÌ µé¾î º¸¾ÒÀ» °ÍÀÌ´Ù. 
            Áö¿ªº¯¼ö´Â procedure°¡ ½ÇÇàµÉ ¶§ ½ºÅÿ¡ ÇÒ´çµÇ´Â º¯¼ö¸¦ ¸»ÇÑ´Ù. ¹Ý¸é Àü¿ªº¯¼ö´Â  
            ÇÁ·Î±×·¥ÀÌ ½ÃÀÛµÉ ¶§, Á¤ÀÇ¿Í ÇÒ´çÀÌ ÀÌ·ç¾îÁø´Ù. ÀÌ·¯ÇÑ ÀÌÀ¯·Î Àü¿ªº¯¼ö´Â  
            ÇÁ·Î±×·¥ÀÌ Á¾·áµÉ ¶§±îÁö ÇÁ·Î±×·¥ Àü¿ª¿¡ °ÉÃļ­ »ç¿ëµÇ¾îÁö¸ç, Áö¿ªº¯¼ö´Â ÇÁ·Î½ÃÁ®ÀÇ Á¾·á¿Í 
            µ¿½Ã¿¡ »ç¶óÁö°Ô µÈ´Ù. ÀϹÝÀûÀ¸·Î ÁÁÀº ÇÁ·Î±×·¥Àº Áö¿ªº¯¼ö¸¦ ÁÖ·Î »ç¿ëÇϸç, Àü¿ªº¯¼ö´Â  
            Á¦ÇÑÀûÀ¸·Î »ç¿ëÇÑ´Ù. Áö¿ªº¯¼ö¿¡ ´ëÇØ¼­´Â ³ªÁß¿¡ Á»´õ ÀÚ¼¼È÷ ´Ù·çµµ·Ï ÇϰڴÙ. 
        </para> 
        <para> 
            ´ÙÀ½Àº <emphasis>»ó¼ö</emphasis>(constants)¿µ¿ªÀÌ´Ù. »ó¼ö´Â ¾î¶² °ªÀ» »ç¿ëÇϱ⠽±µµ·Ï ÀçÁ¤ÀÇ  
            ÇÑ Symbol À̶ó°í º¸¸é µÈ´Ù. ¾Æ·¡ÀÇ ¿¹¸¦ º¸µµ·Ï ÇÏÀÚ.  
<screen> 
.equ UNAVAILABLE, 0 
.equ AVAILABLE, 1 
</screen> 
            ÀÌ´Â UNAVAILABE¸¦ »ç¿ëÇÒ°æ¿ì ÀÌ´Â ¼ýÀÚ 0À» »ç¿ëÇϸç, AVAILABLE¸¦ »ç¿ëÇÒ °æ¿ì ¼ýÀÚ 1ÀÌ  
            »ç¿ëµÇ¾î ÁüÀ» ÀǹÌÇÑ´Ù. ¸¸¾à ÀÌ·¯ÇÑ »ó¼ö´ë½Å¿¡, ÄÚµå Áß¿¡ 0°ú 1À» Á÷Á¢ »ç¿ëÇÏ°Ô µÉ°æ¿ì  
            Àǹ̸¦ Á¦´ë·Î ÆÄ¾ÇÇϱⰡ Èûµé °ÍÀÌ´Ù. ¶ÇÇÑ AVAILABLEÀÇ °ªÀ» 2·Î ÇÏ°í ½Í´Ù°í ÇÒ °æ¿ì¿¡µµ,  
            ´ÜÁö »ó¼ö¸¸ ã¾Æ¼­ °ªÀ» ¹Ù²ãÁÖ¸é µÈ´Ù. »ó¼ö¸¦ »ç¿ëÇÏÁö ¾Ê¾ÒÀ» °æ¿ì¿¡´Â ÀÏÀÏÀÌ Äڵ带 ã¾Æ°¡¸é¼­ 
            °ªÀ» ¹Ù²ãÁà¾ß¸¸ ÇÒ °ÍÀÌ´Ù. 
<screen> 
.equ BRK, 45 
.equ LINUX_SYSCALL, 0x80 
</screen> 
        int $0x80À» »ç¿ëÇÏ´Â °Íº¸´Ù´Â int $LINUX_SYSCALLÀÌ ÈξÀ ÀÌÇØÇÏ°í »ç¿ëÇϱ⵵ ½±´Ù. ÀϹÝÀûÀ¸·Î 
        »ó¼ö´Â ÇÁ·Î±×·¥»ó¿¡ ÇϵåÄÚµù µÇ´Â °ªµéÀ» °ü¸®Çϱâ À§Çؼ­ »ç¿ëµÈ´Ù. »ó¼ö´Â .equ¸¦ ÀÌ¿ëÇØ¼­ 
        Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. 
        </para> 
    </section> 
</section> 
<section> 
    <title>Counting Like a Computer</title> 
    <para> 
    </para> 
</section> 
 
<section> 
    <title>High-Level Language</title> 
    <para>     
    </para>     
</section> 
 
<section> 
    <title>Optimization</title> 
    <para>     
    </para>     
</section> 
<section> 
    <title>Moving on from Here</title> 
    <para>     
    </para>     
</section> 
</article> 
 

º¯°æ»çÇ×

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.