>>> Åͺ¸ CÀÇ ±íÀº °÷ <<< Á¦4ȸ ¾î¼Àºí¸® ÄÚµå Á¢¼Ó Assembly Code Interface ±Û/ÀÓÀ롂 (¼­¿ï´ë ±â°è°øÇаú4) --------------------------------------------------------------------- 1 º»¹®¿¡ ¾Õ¼­ --------------------------------------------------------------------- ÀÌÁ¦±îÁö µ¶ÀÚ ¿©·¯ºÐ°ú ÇÔ²² Å©°Ô ¼¼ °¡Áö¸¦ ¾Ë¾Æº¸¾Ò´Ù. Çϳª´Â ÅÍ º¸ C°¡ Á¦°øÇÏ´Â °¢Á¾ ¸Þ¸ð¸® ¸ðµ¨ÀÇ ±¸Á¶ÀÌ°í, ´Ù¸¥ Çϳª´Â ÇÔ¼ö È£Ãâ ¹æ ½ÄÀ̸ç, ³ª¸ÓÁö Çϳª´Â C È£Ãâ °üÇà(C ¹æ½Ä ¸Å°³º¯¼ö Àü´Þ ¹æ½Ä)À̾ú´Ù. ±×¸®°í ±× C È£Ãâ °üÇàÀÌ ½ÇÁ¦·Î ¾î¼Àºí¸® ¼öÁØ¿¡¼­ ¾î¶»°Ô ±¸ÇöµÇ´Â°¡¿¡ ´ëÇØ °¨À» Àâ±â À§ÇÑ ¿¹µµ Á¢ÇØ º¸¾Ò´Ù. À̹ø ´Þ¿¡´Â °è¼ÓÇؼ­ ¾î¼Àºí¸® ÄÚµå¿Í C ·çƾ°úÀÇ Á¢¼Ó(interface)À» À§ÇØ ¾î¼Àºí¸® ¸ðµâ ÂÊ¿¡¼­ °ú¿¬ ¾î¶°ÇÑ Á¶Ä¡°¡ ÃëÇØÁ®¾ß Çϴ°¡¿¡ °üÇÑ °®°¡Áö ±ÔÄ¢µéÀ» »ó¼¼È÷ ¾Ë¾Æº¸µµ·Ï ÇÏ°Ú´Ù. À̹ø ¿¬ÀçÀÇ °¡Àå ÇٽɵǴ ºÎºÐÀÌ º»°ÝÀûÀ¸·Î ½ÃÀ۵ǹǷΠÁÖÀÇ ±í°Ô ÀÐ¾î ³ª°¬À¸¸é ÇÑ´Ù. Àú¹ø ´Þ±î Áö´Â ¼­·Ð¿¡ ºÒ°úÇÏ´Ù. Âü°í·Î À̹ø ±Û¿¡¼­´Â µ¶ÀÚ°¡ 8086°è¿­ ¾î¼Àºí¸®¿¡ ´ëÇÏ¿© ÃæºÐÇÑ »ç Àü Áö½ÄÀ» °¡Áö°í ÀÖ´Ù´Â °¡Á¤ÇÏ¿¡ ÁøÇàÇÒ °ÍÀÌ´Ù. Áï °¢Á¾ 8086 ¸í·É¾îµé Àº ¹°·ÐÀÌ°í DW, DD, PUBLIC, EXTRN, SEGMENT, GROUP µî ¾î¼Àºí·¯ÀÇ ÁÖ¿ä ÇÑ °¢Á¾ Áö½ÃÀÚ(directive)ÀÇ »ç¿ë¹ý¿¡ °ü·ÃµÈ ÃæºÐÇÑ Áö½Äµéµµ ¿äÇÑ´Ù. ¸¸¾à ÀÌ¿¡ ´ëÇÑ Áö½ÄÀÌ ºÒÃæºÐÇÏ´Ù¸é ÇØ´ç ¾î¼Àºí¸® °ü·Ã ¼­ÀûµéÀ» Âü°íÇÏ ±â ¹Ù¶õ´Ù. --------------------------------------------------------------------- 2 ¾î¼Àºí¸® ÄÚµå Á¢¼Ó °³¿ä --------------------------------------------------------------------- ¾î¼Àºí¸® ·çƾÀº C¿¡¼­ º¼ ¶§ Àüü ÇÁ·Î±×·¥ÀÇ ÀϺκÐÀ¸·Î¼­ ¸µÅ©µÉ ÇϳªÀÇ µ¶¸³µÈ ¸ðµâ·Î °£ÁֵȴÙ. ±×·¡¼­ ¾î¼Àºí¸® ·çƾÀº ¾î¼Àºí¸® ¸ðµâÀÌ ¶ó°íµµ ºÒ¸®¸ç, ±× ¾î¼Àºí¸® ¸ðµâÀÌ ¸µÄ¿¿¡ ÀÇÇØ Àû¹ýÇÑ C ¸ðµâ·Î ÀÎ½ÄµÇ ±â À§ÇÑ °®°¡Áö °üÇà(±ÔÄ¢)µéÀÌ ÁöÄÑÁ®¾ß Çϴµ¥, ±×°ÍÀº ´ë·« ´ÙÀ½°ú °° ´Ù. [1] ¾î¼Àºí¸® ¸ðµâÀº Ÿ ¸ðµâ°úÀÇ Á¢¼ÓÀ» À§ÇØ ¸µÄ¿°¡ ÇÊ¿ä·Î ÇÏ´Â ¸ðµç Á¤º¸¸¦ ¿ÏÀüÇÏ°Ô Á¦°øÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î °¢Á¾ "¿ÜºÎ¸íĪ(external identifier)¿¡ °ü·ÃµÈ Á¤º¸" µîÀ» ¼¼¼¼ÇÏ°í Ʋ¸²¾øÀÌ ±â¼úÇØ Áà¾ß ÇÑ ´Ù. [2] Á¤ÇØÁø ¸Þ¸ð¸® ¸ðµ¨ÀÇ ±¸Á¶¸¦ À¯ÁöÇϱâ À§ÇÑ "¼¼±×¸ÕÆ® ¹èÄ¡ ±ÔÄ¢"ÀÌ Ã¶ÀúÇÏ°í ÀÏ°üµÇ°Ô ÁöÄÑÁ®¾ß ÇÑ´Ù. Áï ÇϳªÀÇ ½ÇÇà È­ÀϷμ­ ¸µÅ©µÉ ¸ðµç ¸ðµâÀº µ¿ÀÏÇÑ ¸ðµ¨ ±¸Á¶¸¦ °¡Á®¾ß ÇÑ´Ù. ¹°·Ð ¸Þ¸ð¸® ¸ðµ¨À» È¥ ¿ëÇÒ ¼öµµ ÀÖÁö¸¸ ±×°ÍÀº ´ë´ÜÈ÷ À§ÇèÇÑ ÀÛ¾÷ÀÌ µÈ´Ù. ¿ì¼±Àº 2¹ø »çÇ׿¡ ÇØ´çÇÏ´Â ¼³¸íºÎÅÍ ÇØ ³ª°¡°Ú´Âµ¥, ±× Àü¿¡ ÇÑ °¡ Áö ºÐ¸íÈ÷ ÇØµÑ ÀÏÀÌ ÀÖ´Ù. ±×°ÍÀº Á¤Àû µ¥ÀÌÅÍÀÇ µÎ °¡Áö Å« ±¸ºÐ¿¡ ´ë ÇÑ °ÍÀÌ´Ù. --------------------------------------------------------------------- 3 ÃʱâÈ­µÈ Á¤Àû µ¥ÀÌÅÍ¿Í ºñÃʱâÈ­µÈ Á¤Àû µ¥ÀÌÅÍ --------------------------------------------------------------------- Àü¿¡µµ ¾ð±ÞÇßÁö¸¸ ´Ù½Ã Çѹø ÀÚ¼¼È÷ ¼³¸íÇÏÀÚ¸é, "Á¤Àû µ¥ÀÌÅÍ(stati c data)"¶õ °¢Á¾ ¿ÜºÎº¯¼ö, Á¤Àûº¯¼ö ¹× ¹®ÀÚ¿­ »ó¼ö ¼¼ °¡ÁöµéÀ» ÃÑĪÇÏ ´Â ¸»ÀÌ´Ù. ´Ù¸¸ ¹®ÀÚ¿­ »ó¼ö´Â Åͺ¸ C ³»ºÎÀûÀ¸·Î º¼ ¶§ ÇÔ¼ö ³»¿¡¼­ Á¤ ÀǵǴ ³»ºÎÁ¤Àûº¯¼ö(internal static variable)¿Í µ¿µîÇÏ°Ô Ãë±ÞµÇ±â ¶§ ¹®¿¡(<¸®½ºÆ® 8> Âü°í), ÀÌÈÄÀÇ ¼³¸í¿¡¼­ ¹®ÀÚ¿­ »ó¼ö¿¡ °üÇÑ »çÇ×Àº Á¤Àû º¯¼öÀÇ °üÁ¡¿¡¼­ À¯ÃßÇÏ¿© »ý°¢ÇØ º¸¸é Ʋ¸²¾øÀ» °ÍÀÌ´Ù. ½ÇÁ¦·Î ¾î¼Àºí¸® ¼öÁØ¿¡¼­´Â ¹®ÀÚ¿­ »ó¼ö¿Í Á¤Àûº¯¼ö°¡ ¹®¹ýÀûÀ¸·Î ±¸º°µÇÁö ¾Ê´Â´Ù. ÇÑÆí ÀÌ Á¤Àû µ¥ÀÌÅÍ´Â ¿¹¿Ü ¾øÀÌ µ¥ÀÌŸ ¼¼±×¸ÕÆ®ÀÇ ¼±µÎ, Áï ¿É¼ÂÀ¸ ·Î 0x0000 ¹øÁö ÀÌÈÄ¿¡ ³õÀ̵µ·Ï µÇ¾î ÀÖ´Ù. ÀÚ¼¼ÇÑ °ÍÀº 6¿ù ´Þ¿¡ °ÔÀçÇÑ °¢ ¸Þ¸ð¸® ¸ðµ¨ÀÇ Áöµµ¸¦ Âü°íÇϱ⠹ٶõ´Ù. ´Ù½Ã º»·ÐÀ¸·Î µÇµ¹¾Æ °¡¼­, Á¤Àû µ¥ÀÌŸ´Â ´Ù½Ã ±× ÃʱâÈ­ ¿©ºÎ¿¡ µû ¶ó "ÃʱâÈ­µÈ Á¤Àû µ¥ÀÌŸ(initialized static data)"¿Í "ºñÃʱâÈ­µÈ Á¤Àû µ¥ÀÌŸ(uninitialized static data)"·Î ³ª´¶´Ù. ÆíÀÇ»ó ÀÌÁ¦ºÎÅÍ ÀüÀÚ¸¦ I SD, ÈÄÀÚ¸¦ UISD¶ó°í ¾àĪÇÏ°Ú´Ù. ¿©±â¼­ ÃʱâÈ­ ¿©ºÎ´Â ¿ÜºÎº¯¼ö ȤÀº Á¤Àûº¯¼ö¸¦ Á¤ÀÇÇÒ ¶§(¼±¾ðÇÒ ¶§ °¡ ¾Æ´Ô!) ±× ÃʱâÄ¡(initializer)¸¦ ¸í½ÃÀûÀ¸·Î ÁöÁ¤Çß´À³Ä¿¡ ´Þ·Á ÀÖ´Ù. ¿¹¸¦ µé¾î ¾Æ·¡ÀÇ ¿ÜºÎº¯¼ö Á¤ÀÇ¿¡¼­ º¼ ¶§ initvar´Â ISD¿¡ ¼ÓÇÏ°í unini tvar´Â UISD¿¡ ¼ÓÇÑ´Ù. int initvar = 10; int uninitvar; ÀÌ·± ±¸ºÐÀÌ »ý°Ü³­ ±Ùº»ÀûÀÎ ÀÌÀ¯´Â ÇѸ¶µð·Î ÄÄÆÄÀÏµÈ ¸ñÀû È­ÀÏ ¹× ½ÇÇà È­ÀÏÀÇ Å©±â¸¦ ´ëÆø ÁÙÀ̱â À§ÇÑ °ÍÀÌ´Ù. ´Ùµé ¾Ë´Ù½ÃÇÇ UISD´Â ÇÁ·Î ±×·¥ ½ÇÇà Á÷ÈÄ¿¡ 0 ¶Ç´Â 0¿¡ »ó´çÇÏ´Â °ª(À̸¦ Å×¸é ³Î ¹®ÀÚ '\0')À¸·Î ÃʱâÈ­µÈ´Ù. ¿©±â¼­ ÁÖ¸ñÇÒ °ÍÀº "ÇÁ·Î±×·¥ ½ÇÇà Á÷ÈÄ"¶ó´Â ´ë¸ñÀÌ´Ù. ÀÌ ´ë¸ñ¿¡¼­ º¼ ¶§ ½ÇÇà È­ÀÏ ÀÚü´Â ±× ÃʱâÄ¡(Áï 0)¸¦ Æ÷ÇÔÇÏÁö ¾Ê°í ÀÖÀ½ À» Á÷°¨ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±¸Ã¼ÀûÀ¸·Î ¸»Çؼ­ UISDµéÀº ½ÇÇà È­ÀÏ ³»¿¡ ±× °ø°£ÀÌ ¸¶·ÃµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó, ´Ù¸¸ ½ÇÇà Á÷ÈÄ¿¡ ±âµ¿ ÄÚµå(startup code)¿¡ ÀÇÇؼ­ ±× ¿µ¿ªÀÌ ÇÒ´çµÇ°í °ðÀ̾î 0À¸·Î ÃʱâÈ­µÉ µû¸§ÀÌ´Ù. ±×·¡¼­ °á°úÀûÀ¸·Î ½ÇÇà È­ÀÏ ÀÇ Å©±â¸¦ UISD°¡ Â÷ÁöÇÏ´Â ¿µ¿ª¸¸Å­ °¨¼Ò½ÃÅ°´Â È¿°ú¸¦ °¡Á®¿Â´Ù. --------------------------------------------------------------------- 4 ¾î¼Àºí¸® ¸ðµâÀÇ ÀϹÝÀûÀÎ ÀÛ¼º ¾ç½Ä --------------------------------------------------------------------- <¸®½ºÆ® 1>¿¡ ¾î¼Àºí¸® ¸ðµâÀÇ ÀϹÝÀûÀÎ ÀÛ¼º ¾ç½ÄÀ» º¸¿´´Ù. ÁÖ¸ñÇØ ¼­ º¼ °ÍÀº SEGMENT ¹× GROUP Áö½ÃÀÚ¿¡ °ü·ÃµÈ »çÇ×ÀÌ´Ù. À̵éÀº ¾î¼Àºí¸® ¸ðµâÀÌ ÀÏ°üµÇ°Ô ÁöÄÑ¾ß ÇÒ ¼¼±×¸ÕÆ® ¹èÄ¡ ±ÔÄ¢ÀÇ ¸ðµç °ÍÀ» º¸¿© ÁØ´Ù. <¸®½ºÆ® 1> ¾î¼Àºí¸® ¸ðµâÀÇ ÀϹÝÀûÀÎ ¾ç½Ä --------------------------------------------------------------------- ; ; °¢Á¾ ÁÖ¼®¹®(ÀϹÝÀûÀ¸·Î ÇÁ·Î±×·¥ Á¦¸ñ) ; +--- ÄÚµå ¼¼±×¸ÕÆ®¸í SEGMENT BYTE PUBLIC 'CODE' ASSUME cs:, ds: << ÄÚµå ¼¼±×¸ÕÆ®ºÎ >> ¡ç º¸Åë(¾à°£ Å«) °íµñü ¿©±â´Ù ÄÚµå(°¢Á¾ ¾î¼Àºí¸® ¸í·Éµé)¸¦ µÐ´Ù ¡ç ÀÛÀº ±ÛÀÚü ENDS +------ µ¥ÀÌŸ ±×·ì¸í --- _BSS ¼¼±×¸ÕÆ®¸¦ GROUP _DATA, _BSS »ý·«ÇßÀ» °æ¿ì »èÁ¦ÇÑ´Ù. +------ ÃʱâÈ­µÈ µ¥ÀÌŸ ¼¼±×¸ÕÆ®¸í SEGMENT WORD PUBLIC 'DATA' << ÃʱâÈ­µÈ µ¥ÀÌŸ ¼¼±×¸ÕÆ®ºÎ >> ¿©±â´Ù ISDÀÇ Á¤ÀǸ¦ µÐ´Ù. ENDS +------ ºñÃʱâÈ­µÈ µ¥ÀÌŸ ¼¼±×¸ÕÆ®¸í _BSS SEGMENT WORD PUBLIC 'BSS' << ºñÃʱâÈ­µÈ µ¥ÀÌŸ ¼¼±×¸ÕÆ®ºÎ >> ¿©±â´Ù UISDÀÇ Á¤ÀǸ¦ µÐ´Ù. ÀÌ _BSS ¼¼±×¸ÕÆ®´Â ¼±ÅÃÀûÀÌ´Ù. Áï »ý·« °¡´ÉÇÏ´Ù. _BSS ENDS END --------------------------------------------------------------------- <¸®½ºÆ® 1>¿¡¼­ , ´Â °¢ ¸Þ¸ð¸® ¸ðµ¨¿¡ µû¶ó¼­ <Ç¥ 1>¿¡ ¼­ ¹Ì¸® Á¤ÇØÁø (³í¸®) ¼¼±×¸ÕÆ®¸íÀ¸·Î ġȯµÇ¾î¾ß ÇÑ´Ù. ¸¶Âù°¡Áö·Î µµ ¹Ì¸® Á¤ÇØÁø ±×·ì¸íÀ¸·Î ġȯµÇ¾îÁ®¾ß ÇÑ´Ù. ÀÌ ¼¼±×¸ÕÆ®¸í ¹× ±×·ì ¸íÀº ÇÁ·Î±×·¥ Àüü¿¡ °ÉÃÄ ÀÏ°üµÇ°Ô ÁöÄÑÁ®¾ß Çϸç, ±×·¸Áö ¾ÊÀ» °æ¿ì ¸µ Å© ¹× ½ÇÇà½Ã ¿¹±âÄ¡ ¸øÇÑ ¿¡·¯°¡ ¹ß»ýÇÑ´Ù. ¹°·Ð Àͼ÷ÇØÁö¸é º° °Íµµ ¾Æ ´Ï°ÚÁö¸¸ óÀ½ ¹è¿ï ¶§¿¡´Â ƯÈ÷ À¯³äÇØ¾ß ÇÒ °ÍÀÌ´Ù. <¸®½ºÆ® 1>¿¡ ´ëÇØ ºÎ¿¬ÇØ¾ß ÇÒ »çÇ×ÀÌ µÎ °¡Áö ÀÖ´Ù. ±×°ÍÀº ù°, U ISD°¡ À§Ä¡ÇÒ _BSS ¼¼±×¸ÕÆ®´Â ¼±ÅÃÀû(optional)À̶ó´Â °ÍÀÌ´Ù. ´Ù½Ã ¸»ÇØ ¼­ UISD°¡ ¾î¼Àºí¸® ¸ðµâ ³»¿¡ Çϳªµµ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é, Áï ¸ðµç Á¤Àû µ¥ÀÌŸ¿¡ ÃʱâÄ¡°¡ ÁöÁ¤µÇ¾î ÀÖ´Ù¸é, _BSS ¼¼±×¸ÕÆ®¸¦ »ý·«ÇÒ ¼öµµ ÀÖ´Ù. ¹°·Ð _BSS¸¦ »ý·«ÇÒ °æ¿ì¿¡ GROUP ÀÇ»ç ¸í·É¹®¿¡¼­ _BSS¸¦ »èÁ¦ÇØ¾ß ÇÑ´Ù. ±×¸®°í °Å´ë ¸ðµ¨¿¡¼­´Â µ¥ÀÌŸ ¼¼±×¸ÕÆ®°¡ °¢ ¸ðµâ¸¶´Ù µ¶¸³ÀûÀ¸·Î Á¸ÀçÇѴٴ Ư¼º ¶§¹®¿¡ ´Ù¸¥ ¸ðµ¨°ú ´Þ¸® À¯ÀÏÇÏ°Ô UISD¸¦ ÀÎÁ¤ÇÏÁö ¾Ê´Â ´Ù. Áï C ¹®¹ý»óÀ¸·Î´Â ÃʱâÄ¡¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀº UISD¶ó ÇÒÁö¶óµµ ³»ºÎÀûÀ¸ ·Î´Â 0À̶ó´Â ÃʱâÄ¡°¡ ÁöÁ¤µÈ ISD·Î °£ÁֵȴÙ. µû¶ó¼­ °Å´ë ¸ðµ¨¿¡¼­´Â _ BSS ¼¼±×¸ÕÆ®¸¦ Àý´ë·Î µÎ¾î¼­´Â ¾È µÇ¸ç ¸ðµÎ ÇØ´ç ¸ðµâÀÇ ISD ¿µ¿ª¿¡ ¾µ ¾î ´ã¾Æ¾ß ÇÑ´Ù. Âü°í·Î 0À̶ó´Â(¶Ç´Â 0¿¡ »ó´çÇÏ´Â) ÃʱâÄ¡°¡ ¸í½ÃÀûÀ¸·Î ÁöÁ¤µÈ º¯¼ö ´Â, ºñ·Ï UISD°¡ 0À¸·Î ÃʱâÈ­µÇ±â´Â ÇÏÁö¸¸, ISD·Î °£Áֵȴٴ Á¡¿¡ À¯ÀÇ Çϱ⠹ٶõ´Ù. ¾î¼Àºí¸® ¸ðµâ¿¡¼­ UISD¸¦ Á¤ÀÇÇÏ´Â ¹æ¹ýÀº DB, DW µî¿¡ 0ÀÇ ÃʱâÄ¡¸¦ ÁöÁ¤ÇÏ´Â °Ô ¾Æ´Ï¶ó ? ±âÈ£¸¦ ÁöÁ¤ÇÏ¿© ÃʱâÄ¡¸¦ ¸í½ÃÇÏÁö ¾Ê´Â °ÍÀÌ´Ù. ºñ·Ï ÃßÈÄ¿¡ 0À¸·Î ÃʱâÈ­µÇ´õ¶óµµ ¸»ÀÌ´Ù. ½Ç·Ê´Â <¸®½ºÆ® 7>°ú <¸®½ºÆ® 8>¸¦ ºñ±³ÇÏ¿© Âü°íÇϱ⠹ٶõ´Ù. --------------------------------------------------------------------- 5 ¼¼±×¸ÕÆ® ¹èÄ¡ ±ÔÄ¢ --------------------------------------------------------------------- ÀÌÁ¦ºÎÅÍ ¼³¸íÇÒ ³»¿ëÀº ÁöÁ¤µÈ ¸Þ¸ð¸® ¸ðµ¨¿¡ µû¶ó ±× ±¸Á¶¸¦ À¯ÁöÇÏ ±â À§ÇÑ ¼¼±×¸ÕÆ® ¹èÄ¡ ±ÔÄ¢µé·Î¼­ ¹Ýµå½Ã öÀúÇÏ°Ô ÁöÄÑÁ®¾ß ÇÑ´Ù. ´Ü ÇÑ °¡Áö¶óµµ ºü¶ß¸®°Å³ª À߸ø ÁöÁ¤ÇÏ¸é ¸µÅ© ¶Ç´Â ½ÇÇà½Ã ¿¹±âÄ¡ ¸øÇÑ ¿¡·¯°¡ ¹ß»ýÇϰųª ÇÁ·Î±×·¥ÀÌ »çÀü °æ°í(?) ¾øÀÌ ±×³É ÆøÁÖÇØ ¹ö¸®¹Ç·Î ÁÖÀÇ¿¡ ÁÖÀǸ¦ °ÅµìÇϱ⸦ ´çºÎÇÑ´Ù. Âü°í·Î Åͺ¸ ¾î¼Àºí·¯¿¡¼­´Â Åͺ¸ C ȣȯÀÇ ¸Þ¸ð¸® ¸ðµ¨À» ÁöÁ¤ÇÒ ¼ö Àֱ⠶§¹®¿¡ ¼¼±×¸ÕÆ® ¹èÄ¡¸¦ À§ÇØ º¹ÀâÇÏ°Ô SEGMENT¿Í DGROUP Áö½ÃÀÚ¸¦ ¾µ ÇÊ¿ä°¡ ¾ø¾î¼­ ´ë´ÜÈ÷ Æí¸®ÇÏ´Ù. ÇÏÁö¸¸ ÀÏ´Ü ¾Ë¾Æ µÎ±â´Â ÇØ¾ß ÇÒ °Í ÀÌ´Ù. ÀüÀÚ°è»ê±â ¾²¸é µÈ´Ù°í Çؼ­ ¼ÕÀ¸·Î ³ª´°¼ÀÇÏ´Â ¹æ¹ýÀ» ¹è¿ìÁö ¾Ê °Ú´Ù¸é ÀÌ°Ç Á» °ï¶õÇÏÁö ¾Ê´Â°¡? Åͺ¸ ¾î¼Àºí·¯ÀÇ ¸Þ¸ð¸® ¸ðµ¨ Áö¿ø °ü ·Ã ±â´ÉÀº µÎ¼¼ ´Þ ÈÄ¿¡ ºÐÀ§±â°¡ ¹«¸£ÀÍÀ¸¸é ÀÚ¼¼È÷ ¼³¸íÇÏ°Ú´Ù. ¹Ì¸® ¾Ë ¾Æº¸°í ½ÍÀº µ¶ÀÚ´Â Turbo Assembler 1.0 User's Guide 312~315ÂÊÀ» Âü°í Çϱ⠹ٶõ´Ù. 5.1 ÄÚµå ¼¼±×¸ÕÆ® +--------------------------------------+ | SEGMENT BYTE PUBLIC 'CODE' | | ASSUME cs:, ds: | +--------------------------------------+ [1] (³í¸®) ÄÚµå ¼¼±×¸ÕÆ®¸í ´Â ¸Þ¸ð¸® ¸ðµ¨¿¡ µû¶ó ¹Ýµå½Ã <Ç¥ 1> ¿¡ Á¤ÇØÁ® ÀÖ´Â ¸íĪÀ̾î¾ß ÇÑ´Ù. [2] Á¤·ÄÇü½Ä(alignment)Àº BYTEÇüÀÌ´Ù. [3] Á¶ÇÕÇü½Ä(combine type)Àº ¹Ýµå½ÃPUBLICÀ̾î¾ß ÇÑ´Ù. PUBLICÀ» »ý·« ÇÏ¸é °¢ ³í¸® ¼¼±×¸ÕÆ®°¡ ÇϳªÀÇ ¹°¸® ¼¼±×¸ÕÆ®·Î °áÇÕµÇÁö ¸øÇϱ⠶§ ¹®¿¡ ¸µÅ© ¹× ½ÇÇà½Ã ¿¡·¯°¡ ³ª°Å³ª ÇÁ·Î±×·¥ÀÌ ÆøÁÖÇØ ¹ö¸°´Ù. [4] Ŭ·¡½º¸í(class name)Àº ¹Ýµå½Ã 'CODE'À̾î¾ß ÇÑ´Ù. ¸¸¾à ºü¶ß¸®°Å³ª ´Ù¸¥ Ŭ·¡½º¸íÀ» ¾²¸é °¢°¢ÀÇ (³í¸®) ÄÚµå ¼¼±×¸ÕÆ®µéÀ» ¿¬¼ÓµÇ°Ô À§ Ä¡½Ãų ¼ö ¾øÀ¸¹Ç·Î Á¤ÇØÁø ¸Þ¸ð¸® ¸ðµ¨ÀÇ ±¸Á¶¸¦ µû¸¦ ¼ö ¾ø°Ô µÈ´Ù. [5] ASSUME¹®¿¡¼­ ÄÚµå ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍ CS´Â ¸¦ ¼¼±×¸ÕÆ® º£À̽º ·Î ÃëÇÏ°í µ¥ÀÌŸ ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍ DS´Â ±×·ì ¸¦ ¼¼±×¸ÕÆ® º£ À̽º·Î ÃëÇØ¾ß ÇÑ´Ù. ¿©ºÐ(extra) ¼¼±×¸ÕÆ® ·¹Áö½ºÅÍ ES´Â ¾Æ¹«·¡µµ »ó°ü¾øÀ¸³ª ÀϹÝÀûÀ¸·Î ¸¦ ¼¼±×¸ÕÆ® º£À̽º·Î ÃëÇÑ´Ù. À¯ÀÇÇÒ »çÇ×Àº <Ç¥ 1>¿¡µµ ³ªÅ¸³ÂÁö¸¸ ³ª ´Â ¸Þ¸ð¸® ¸ðµ¨¿¡ µû¶ó ¼­ Ç×»ó µ¿ÀÏÇÑ ¸íĪÀÏ ¼öµµ ÀÖ°í, °¢ ¸ðµâ¸¶´Ù º°µµÀÇ ¸íĪÀÌ µÉ ¼ö µµ ÀÖ´Ù´Â Á¡ÀÌ´Ù. 5.2 µ¥ÀÌŸ ¼¼±×¸ÕÆ® +------------------------------------+ | ±×·ì ¼±¾ð | | GROUP _DATA, _BSS | +------------------------------------+ | ÃʱâÈ­µÈ µ¥ÀÌŸ ¼¼±×¸ÕÆ®ÀÇ ¼±¾ð | | SEGMENT WORD PUBLIC 'DATA' | +------------------------------------+ | ºñÃʱâÈ­µÈ µ¥ÀÌŸ ¼¼±×¸ÕÆ®ÀÇ ¼±¾ð | | _BSS SEGMENT WORD PUBLIC 'BSS' | +------------------------------------+ [1] (³í¸®) µ¥ÀÌŸ ¼¼±×¸ÕÆ®¸í ´Â ¸Þ¸ð¸® ¸ðµ¨¿¡ µû¶ó ¹Ýµå½Ã <Ç¥ 1>¿¡ Á¤ÇØÁ® ÀÖ´Â ¸íĪÀ̾î¾ß ÇÑ´Ù. ¿¹ÄÁµ¥ °Å´ë ¸ðµ¨ÀÌ ¾Æ´Ï¶ó¸é ´Â Ç×»ó _DATAÀÌ´Ù. [2] Á¤·ÄÇü½Ä(alignment)Àº WORDÇüÀÌ´Ù. [3] Á¶ÇÕÇü½Ä(combine type)Àº ¹Ýµå½Ã PUBLICÀ̾î¾ß ÇÑ´Ù. PUBLICÀ» »ý·« ÇÏ¸é °¢ ³í¸® ¼¼±×¸ÕÆ®°¡ ÇϳªÀÇ ¹°¸® ¼¼±×¸ÕÆ®·Î °áÇÕµÇÁö ¸øÇϱ⠶§ ¹®¿¡ ¸µÅ©½Ã ¿¡·¯°¡ ³ª°Å³ª ½ÇÇà½Ã ÀüÇô ¾û¶×ÇÑ Á¤Àû µ¥ÀÌŸµéÀ» ÂüÁ¶ ÇÏ°Ô µÈ´Ù. ±×¸®°í ÀÌ·± ºÎ·ùÀÇ ¿¡·¯´Â ´ë´ÜÈ÷ ã±â Èûµç °Ô º¸ÅëÀÌ ¸ç, º¹ÀâÇÑ ÇÁ·Î±×·¥Àϼö·Ï ½ÅÀÇ °¡È£°¡ ÀÖ±â Àü¿¡´Â ¸ø ã´Â´Ù°í º¸ ¸é µÈ´Ù. [4] Ŭ·¡½º¸í(class name)Àº ¹Ýµå½Ã 'DATA' ¹× 'BSS'À̾î¾ß ÇÑ´Ù. ¸¸¾à ºü ¶ß¸®°Å³ª ´Ù¸¥ Ŭ·¡½º¸íÀ» ¾²¸é°¢ ³í¸®ÀûÀÎ ÄÚµå ¼¼±×¸ÕÆ®µéÀ» ÇÑ ±º µ¥·Î ¸ðÀ» ¼ö ¾øÀ¸¹Ç·Î, Á¤ÇØÁø ¸Þ¸ð¸® ¸ðµ¨ÀÇ ±¸Á¶¸¦ µû¸¦ ¼ö ¾ø°Ô µÇ¾î, ¿¹±âÄ¡ ¸øÇÏ´Â ¿¡·¯°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. [5] UISD°¡ Çϳªµµ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì _BSS ¼¼±×¸ÕÆ®´Â »ý·«ÇÒ ¼ö ÀÖ´Ù. ÀÌ ¶§ ¹°·Ð ±×·ì ¼±¾ð¿¡¼­µµ ¿ª½Ã _BSS¸¦ »ý·«ÇØ ÁÖ¾î¾ß ÇÑ´Ù. [6] ÃʼÒÇü ¸ðµ¨¿¡¼­ÀÇ ±×·ì ¼±¾ðÀº ¿¹¿Ü·Î ´ÙÀ½°ú °°¾Æ¾ß ÇÑ´Ù. +------------------------------------+ | DGROUP GROUP _TEXT, _DATA, _BSS | +------------------------------------+ Áï, CS¿Í DS°¡ Ç×»ó ÀÏÄ¡µÇ¹Ç·Î _TEXT ¼¼±×¸ÕÆ®°¡ DGROUP¿¡ Æ÷ÇÔµÇ¾î ¾ß ÇÑ´Ù. [7] °Å´ë ¸ðµ¨¿¡¼­´Â DGROUPÀÌ ÀüÇô ¾²ÀÌÁö ¾Ê´Â´Ù. °¢ ¸ðµâ¿¡ ¼ÓÇÑ µ¥ÀÌ ÅÍ ¼¼±×¸ÕÆ®´Â ¼­·Î µ¶¸³ÀûÀ̱⠶§¹®ÀÌ´Ù. 5.3 ½ºÅà ¼¼±×¸ÕÆ® +--------------------------------+ | _STACK SEGMENT STACK 'STACK' | +--------------------------------+ [1] ½ºÅà ¼¼±×¸ÕÆ®¿¡ ´ëÇÑ ¼±¾ðÀº ÃʼÒÇü ¸ðµ¨À» Á¦¿ÜÇÑ ´Ù¸¥ ¸Þ¸ð¸® ¸ðµ¨ ¿¡¼­¸¸ °¡´ÉÇÏ´Ù. [2] ½ºÅà ¼¼±×¸ÕÆ®¿¡ ´ëÇÑ ¼±¾ðÀº À§¿Í °°À¸³ª ÀϹÝÀûÀ¸·Î¾î¼Àºí¸® ¸ðµâ ¿¡ Æ÷ÇÔ½Ãų ÇÊ¿ä´Â ¾ø´Ù. ¿Ö³Ä ÇÏ¸é ±âµ¿ ÄÚµå ¸ðµâ¿¡ ÀÌ¹Ì ¼±¾ðµÇ¾î Àֱ⠶§¹®ÀÌ´Ù. <Ç¥ 1> ¸Þ¸ð¸® ¸ðµ¨¿¡ µû¸¥ ġȯ ±ÔÄ¢°ú ÄÚµå ¹× µ¥ÀÌŸ Æ÷ÀÎÅÍ º¯¼öÀÇ Á¤ÀÇ ¾ç½Ä -------------+----------------------+------------------------- ¸Þ¸ð¸® ¸ðµ¨ | ġȯ ±ÔÄ¢ | ÄÚµå ¹× µ¥ÀÌŸ | | Æ÷ÀÎÅÍ º¯¼öÀÇ Á¤ÀÇ -------------+----------------------+------------------------- ÃʼÒÇü | = _TEXT | ÄÚµå DW _TEXT:º¯¼ö¸í ¼ÒÇü | = _DATA | µ¥ÀÌŸ DW DGROUP:º¯¼ö¸í | = DGROUP | -------------+----------------------+------------------------- Áß¼ÒÇü | = _TEXT | ÄÚµå DW _TEXT:º¯¼ö¸í | = _DATA | µ¥ÀÌŸ DW DGROUP:º¯¼ö¸í | = DGROUP | -------------+----------------------+------------------------- ÁßÇü | = ¸ðµâ¸í_TEXT | ÄÚµå DD º¯¼ö¸í | = _DATA | µ¥ÀÌŸ DW DGROUP:º¯¼ö¸í | = DGROUP | -------------+----------------------+------------------------- ´ëÇü | = ¸ðµâ¸í_TEXT | ÄÚµå DD º¯¼ö¸í | = _DATA | µ¥ÀÌŸ DD DGROUP:º¯¼ö¸í | = DGROUP | -------------+----------------------+------------------------- °Å´ë | = ¸ðµâ¸í_TEXT | ÄÚµå DD º¯¼ö¸í | = ¸ðµâ¸í_DATA | µ¥ÀÌŸ DD º¯¼ö¸í | = ¸ðµâ¸í_DATA | -------------+----------------------+------------------------- * "¸ðµâ¸í"À̶õ ÇØ´ç ¸ðµâÀÇ ¿ø½Ã È­Àϸí(È®ÀåÀÚ Á¦¿Ü)À» ¶æÇÑ´Ù. ¿¹ÄÁµ¥ È­ÀϸíÀÌ dummy.c¶ó¸é "¸ðµâ¸í_TEXT"´Â "DUMMY_TEXT"°¡ µÈ´Ù(°ü·Ê»ó ´ë¹®ÀÚ¸¦ ¾´´Ù). --------------------------------------------------------------------- 6 ¼¼±×¸ÕÆ® ¹èÄ¡ ±ÔÄ¢°ú GROUP ÀÇ»ç ¸í·É¿¡ ´ëÇØ --------------------------------------------------------------------- ¼¼±×¸ÕÆ® ¹èÄ¡ ±ÔÄ¢°ú GROUP ÀÇ»ç ¸í·É¿¡ °üÇØ Á» ´õ ±íÀÌ ¾Ë°í ½ÍÀº µ¶ÀÚ´Â, ´ÙÀ½ ¼­ÀûÀÇ Á¦3Àå "¸µÅ©¿Í ¼¼±×¸ÕÆ®ÀÇ ¹èÄ¡"¿¡ º¸±â µå¹°°Ô »ó¼¼ È÷ ¼³¸íµÇ¾î ÀÖÀ¸¹Ç·Î ±×°É Âü°íÇϱ⠹ٶõ´Ù. ÇÏÁö¸¸ »ç½Ç ¸ô¶óµµ ÇÁ·Î±× ·¡¹ÖÇÏ´Â µ¥¿¡´Â °ÅÀÇ ÁöÀåÀÌ ¾øÀ¸´Ï±î ±»ÀÌ ºÎ´ã ´À³¥ ÇÊ¿ä´Â ¾øÀ» µíÇÏ ´Ù. ȲÈñÀ¶ ÆíÀú, "¸ÅÅ©·Î ¾î¼Àºí·¯ È°¿ë 1", ±³Çлç ÇÏ¿©Æ° Áö¸é »çÁ¤À» °í·ÁÇÏ¿© ÀÌ ±Û¿¡¼­´Â ¼¼±×¸ÕÆ® ¹èÄ¡¿Í GROUP ÀÇ »ç ¸í·É¿¡ °üÇÑ ¼³¸íÀº ÇÏÁö ¾ÊÀ» ÀÛÁ¤À̸ç ÇÒ ÇÊ¿äµµ ¾ø´Ù°í º¸¾Æ, °ú°¨ È÷ »ý·«ÇÏ°Ú´Ù. µ¶ÀÚ ¿©·¯ºÐµµ ±×³É ÀÏÁ¾ÀÇ "°ø½Ä"À̶ó°í »ý°¢ÇØ ÁØ´Ù¸é ¼­·Î¼­·Î ¼ÓÆíÇÒ °Í °°´Ù. ¼öÇÐ/°øÇÐ ¹®Á¦ ¸¹À̵é Ç®¾î ºÁ¼­ ¾Ë°ÚÁö¸¸, °ø½ÄÀÇ À¯µµ °úÁ¤À» ÀüÇô ¸ô¶óµµ ÃÖÁ¾ °ø½Ä°ú ±× Àû¿ë ¹æ¹ý¸¸ ¾Ë¸é ´ëºÎºÐ ÀÇ ¹®Á¦¸¦ ½±»ç¸® Ç®¾î¹ö¸± ¼ö ÀÖ´Â °Í°ú °°Àº ¸Æ¶ôÀÌ´Ù. --------------------------------------------------------------------- 7 ¼ÒÇü ¸ðµ¨¿¡¼­ÀÇ °£´ÜÇÑ ¿¹ --------------------------------------------------------------------- <¸®½ºÆ® 2> ÇÔ¼ö Çϳª¸¦ °¡Áø °¡Àå °£´ÜÇÑ ¸ðµâ dummy.c --------------------------------------------------------------------- void dummy(void) { } --------------------------------------------------------------------- <¸®½ºÆ® 3>ÀÇ dummy.asmÀº ¾Æ·¡¿Í °°ÀÌ tcc.exe¸¦ ½á¼­ <¸®½ºÆ® 2>À» ÄÄÆÄÀÏÇÑ °á°ú¸¦ ½ÇÀº °ÍÀÌ°í, <¸®½ºÆ® 4>´Â dummy.asmÀ» <¸®½ºÆ® 1>ÀÇ ¾ç ½Ä¿¡ ¸ÂÃß¾î ¾Ë¾Æº¸±â ½±°Ô Á¤¸®ÇÑ °ÍÀÌ´Ù. C:\TURBOC\WORK>tcc -S dummy +--- ¾î¼Àºí¸® È­ÀÏÀ» »ý¼ºÇϵµ·Ï ÁöÁ¤ <¸®½ºÆ® 3> dummy.c¸¦ ¼ÒÇü ¸ðµ¨·Î ÄÄÆÄÀÏÇÑ °á°ú --------------------------------------------------------------------- ifndef ??version ?debug macro endm endif ?debug S "dummy.c" _TEXT segment byte public 'CODE' DGROUP group _DATA,_BSS assume cs:_TEXT,ds:DGROUP,ss:DGROUP _TEXT ends _DATA segment word public 'DATA' d@ label byte d@w label word _DATA ends _BSS segment word public 'BSS' b@ label byte b@w label word ---- µð¹ö±ë °ü·Ã Á¤º¸ ?debug C E97615E81406393030382E63 _BSS ends _TEXT segment byte public 'CODE' ; ?debug L 1 --- Çà¹øÈ£ °ü·Ã Á¤º¸ _dummy proc near @1: ¡ç ¹«ÀǹÌÇÑ ·¹À̺í ; ?debug L 4 ret _dummy endp _TEXT ends ?debug C E9 _DATA segment word public 'DATA' s@ label byte _DATA ends _TEXT segment byte public 'CODE' _TEXT ends public _dummy --- Åͺ¸ C´Â º¸Åë public ¼±¾ðÀ» end µÞºÎºÐ¿¡ ¸ð¾Æ ³õ´Â´Ù. --------------------------------------------------------------------- <¸®½ºÆ®4> dummy.asmÀ» <¸®½ºÆ® 1> ¾ç½Ä¿¡ ¸ÂÃç Á¤¸®ÇÑ °á°ú --------------------------------------------------------------------- ;************************************************ ; dummy ¸ðµâÀÇ ¾î¼Àºí¸® ¸®½ºÆ® ; (¼ÒÇü ¸Þ¸ð¸® ¸ðµ¨) ;************************************************ _TEXT SEGMENT BYTE PUBLIC 'CODE' ASSUME cs:_TEXT,ds:DGROUP,ss:DGROUP +---------+ ¼ÒÇü µ¥ÀÌŸ ¸ðµ¨¿¡¼­´Â DS¿Í SS°¡ ÀÏÄ¡µÈ´Ù. PUBLIC _dummy ---PUBLIC ¼±¾ðÀº ¾Æ¹« µ¥³ª À־ µÈ´Ù. _dummy PROC NEAR --- ¼ÒÇü ÄÚµå ¸ðµ¨ÀÏ ¶§ ret --- ¾Æ¹« Àϵµ ÇÏÁö ¾Ê°í °ð¹Ù·Î º¹±Í _dummy ENDP _TEXT ENDS DGROUP GROUP _DATA,_BSS --- ±×·ì¸í DGROUPÀÇ ¼±¾ð _DATA SEGMENT WORD PUBLIC 'DATA' d@ LABEL BYTE -+- ÀÌ ¸ðµâÀÇ _DATA ¼¼±×¸ÕÆ®ÀÇ ¼±µÎ¸¦ d@w LABEL WORD -+ °¡¸®Å°´Â ÀÏÁ¾ÀÇ Æ÷ÀÎÅÍ »ó¼ö s@ LABEL BYTE --- ÀÌ ¸ðµâÀÇ ¹®ÀÚ¿­ »ó¼ö ¿µ¿ªÀÇ ¼±µÎ¸¦ °¡¸®Å°´Â ÀÏÁ¾ÀÇ Æ÷ÀÎÅÍ »ó¼ö _DATA ENDS _BSS SEGMENT WORD PUBLIC 'BSS' b@ LABEL BYTE --- ÀÌ ¸ðµâÀÇ _BSS ¼¼±×¸ÕÆ®ÀÇ ¼±µÎ¸¦ b@w LABEL WORD --- °¡¸®Å°´Â ÀÏÁ¾ÀÇ Æ÷ÀÎÅÍ »ó¼ö (<¸®½ºÆ® 8> Âü°í) _BSS ENDS END --------------------------------------------------------------------- --------------------------------------------------------------------- 8 ´ëÇü ¸ðµ¨¿¡¼­ÀÇ °£´ÜÇÑ ¿¹ --------------------------------------------------------------------- <¸®½ºÆ®5>ÀÇ dummy.asmÀº ¾Æ·¡¿Í °°ÀÌ tcc.exe¸¦ ½á¼­ <¸®½ºÆ® 2>¸¦ ÄÄÆÄÀÏÇÑ °á°ú¸¦ ½ÇÀº °ÍÀÌ°í <¸®½ºÆ® 6>Àº dummy.asmÀ» <¸®½ºÆ® 1>ÀÇ ¾ç ½Ä¿¡ ¸Â°Ô ´Ù½Ã ÀçÁ¤¸®ÇÑ °ÍÀÌ´Ù. C:\TURBOC\WORK>tcc -S -ml dummy +--- ´ëÇü ¸ðµ¨À» ÁöÁ¤ <¸®½ºÆ® 5> dummy.c¸¦ ´ëÇü ¸ðµ¨·Î ÄÄÆÄÀÏÇÑ °á°ú --------------------------------------------------------------------- ifndef ??version ?debug macro endm endif ?debug S "dummy.c" DUMMY_TEXT segment byte public 'CODE' DGROUP group _DATA,_BSS assume cs:DUMMY_TEXT,ds:DGROUP DUMMY_TEXT ends _DATA segment word public 'DATA' d@ label byte d@w label word _DATA ends _BSS segment word public 'BSS' b@ label byte b@w label word ?debug C E97615E8140764756D6D792E63 _BSS ends DUMMY_TEXT segment byte public 'CODE' ; ?debug L 1 _dummy proc far @1: ; ?debug L 4 ret _dummy endp DUMMY_TEXT ends ?debug C E9 _DATA segment word public 'DATA' s@ label byte _DATA ends DUMMY_TEXT segment byte public 'CODE' DUMMY_TEXT ends public _dummy end --------------------------------------------------------------------- <¸®½ºÆ® 6> dummy.asmÀ» <¸®½ºÆ® 1> ¾ç½Ä¿¡ ¸ÂÃç Á¤¸®ÇÑ °á°ú --------------------------------------------------------------------- ;************************************************ ; dummy ¸ðµâÀÇ ¾î¼Àºí¸® ¸®½ºÆ® ; (´ëÇü ¸Þ¸ð¸® ¸ðµ¨) ;************************************************ DUMMY_TEXT SEGMENT BYTE PUBLIC 'CODE' ASSUME cs:DUMMY_TEXT,ds:DGROUP SS¿¡ ´ëÇÑ °¡Á¤ÀÌ ºüÁ® ÀÖÀ½¿¡ À¯ÀÇ---+ PUBLIC _dummy _dummy PROC FAR --- ¿ø°Å¸® ÇÔ¼ö ret _dummy ENDP DUMMY_TEXT ENDS DGROUP GROUP _DATA,_BSS _DATA SEGMENT WORD PUBLIC 'DATA' d@ LABEL BYTE d@w LABEL WORD s@ LABEL BYTE _DATA ENDS _BSS SEGMENT WORD PUBLIC 'BSS' b@ LABEL BYTE b@w LABEL WORD _BSS ENDS END --------------------------------------------------------------------- #53 ÀÓÀ롂 (turbo28 ) [°­ÁÂ] C±íÀº°÷4-2: ¾î¼Àºí¸® ÄÚµå Á¢¼Ó I 05/06 00:17 286 line --------------------------------------------------------------------- 9 Á¤Àû µ¥ÀÌŸÀÇ Á¤ÀÇ --------------------------------------------------------------------- 8086 ¾î¼Àºí¸®¿¡¼­ °¢Á¾ »ó¼ö ¹× º¯¼ö¸¦ Á¤ÀÇÇÒ ¶§¿¡ DB(Define Byt e), DW(Define Word), DD(Define Doubleword) µîÀ» ¾´´Ù´Â °ÍÂëÀº Çϵµ »õ »ï½º·¯¿ö¼­ ¾ê±â¸¦ ¸ø ²¨³»°Ú´Ù. ´Ù¸¸ À¯ÀÇÇÒ »çÇ×Àº C °³³ä¿¡¼­ º¼ ¶§ D W, DD µî¿¡ ÀÇÇÑ º¯¼ö Á¤ÀÇÀÇ ´ë»óÀÌ ¾îµð±îÁö³ª Á¤Àû µ¥ÀÌŸ(Áï ¿ÜºÎº¯¼ö ¿Í Á¤Àûº¯¼ö)¶ó´Â °ÍÀÌ´Ù. ÀÚµ¿º¯¼ö´Â ½ºÅû󿡼­ »ý¼º¼Ò¸êÇÏ°í ·¹Áö½ºÅÍ º¯¼ö´Â ·¹Áö½ºÅÍ ±× ÀÚüÀ̹ǷΠDW³ª DD¿¡ ÀÇÇÑ Á¤ÀÇ¿Í´Â ÇϵîÀÇ »ó°üÀÌ ¾ø´Ù. ÀÌ¿Í °°ÀÌ ¾î¼Àºí¸® ¼öÁØ¿¡¼­ DW³ª DD µî¿¡ ÀÇÇØ Á¤ÀÇµÈ º¯¼öÀÇ ¸íĪ À», PUBLIC¹®À¸·Î ¿ÜºÎ(´Ù¸¥ ¸ðµâ)¿¡ ¾Ë¸®¸é C ¼öÁØ¿¡¼­ÀÇ ¿ÜºÎº¯¼ö°¡ µÇ °í, ¾Ë¸®Áö ¾ÊÀ¸¸é ¿ÜºÎÁ¤Àûº¯¼ö(ÇÔ¼ö ¿ÜºÎ¿¡¼­ Á¤ÀǵǴ Á¤Àûº¯¼ö)°¡ µÇ ´Â °ÍÀÌ´Ù. CÀÇ ³»ºÎÁ¤Àûº¯¼ö(ÇÔ¼ö ³»ºÎ¿¡¼­ Á¤ÀǵǴ Á¤Àûº¯¼ö)´Â ¾î¼Àºí ¸® ¼öÁØ¿¡¼­ ¹®¹ýÀûÀ¸·Î Áö¿øµÇÁö´Â ¾Ê´Â´Ù. ±×·¡¼­ Åͺ¸ C´Â ³»ºÎÁ¤Àûº¯ ¼ö¸¦ Ưº°ÇÑ ¹æ½ÄÀ¸·Î ±¸ÇöÇÏ°í ÀÖ´Ù. ¹®ÀÚ¿­ »ó¼öµµ ³»ºÎÁ¤Àûº¯¼ö¿¡ ÁØÇÑ ´Ù. ½Ç·Ê´Â <¸®½ºÆ® 8>¸¦ Âü°íÇϱ⠹ٶõ´Ù. ÇÑÆí °¢Á¾ º¯¼ö¸¦ ¾î¼Àºí¸® ¼öÁØ¿¡¼­ Á¤ÀÇÇÒ ¶§¿¡´Â C ¼öÁØÀÇ µ¥ÀÌŸ ÇüÀÌ º° Àǹ̰¡ ¾ø´Ù. ±×·¡¼­ ¾î¼Àºí¸® ¼öÁØ¿¡¼­ Áß¿äÇÑ °ÍÀº ´ÙÀ½ÀÇ µÎ °¡Áö »ÓÀÌ´Ù. -------------------------------------------------- [1] µ¥ÀÌŸ ¼¼±×¸ÕÆ®¿¡ ³õÀÏ Á¤Àû µ¥ÀÌŸÀ̳Ä? ¾Æ´Ï¸é ½ºÅû󿡼­ »ý¼º ¼Ò¸êµÉ ÀÚµ¿º¯¼öÀ̳Ä? [2] º¯¼öÀÇ Å©±â°¡ ¸î ¹ÙÀÌÆ®À̳Ä? -------------------------------------------------- ÀÌ Àý¿¡¼­´Â [1]¹ø ±¸ºÐ¿¡¼­ Á¤Àû µ¥ÀÌŸÀÇ ¼³¸íÀ¸·Î ±¹ÇÑÇÏ°í, ±×·± ´ÙÀ½ [2]¹ø ±¸ºÐ¿¡ µû¸£ÀÚ¸é ÀÌ·¸´Ù. Áï, ÀÏ´Ü Á¦ÀÏ ¸ÕÀú CÀÇ ´ëÇ¥ÀûÀÎ ±â º»Çü ¹× Æ÷ÀÎÅÍÇüÀÇ ¹ÙÀÌÆ® Å©±â¸¦ ¾Ë¾Æ¾ß ÇÑ´Ù. ´Ùµé ¾Ë°í ÀÖ°ÚÁö¸¸ ´Ù½Ã Çѹø <Ç¥ 2>¿¡ Á¤¸®ÇØ µÎ¾ú´Ù. ´Ù¸¸ ºÎµ¿ÇüÀº ¾î¼Àºí¸® ¼öÁØ¿¡¼­ ´Ù·ç±â¿¡ ´Â ³Ê¹« ¹÷Â÷¹Ç·Î »ý·«ÇÏ°í, ±× ¹Û¿¡ ¹è¿­Çü ¹× ±¸Á¶Ã¼Çü/°ø¿ëüÇüÀº ¿©±â ¼­ À¯ÃßÇØ º¸¸é ½±°Ô ±× Å©±â¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖÀ» °ÍÀ̹ǷΠ¿ª½Ã »ý·«ÇÑ´Ù. <Ç¥ 2> CÀÇ ´ëÇ¥ÀûÀÎ µ¥ÀÌŸÇüÀÇ ¹ÙÀÌÆ® Å©±â¿Í ±×¿¡ µû¸£´Â ¿ÜºÎº¯¼ö ¹× Á¤Àûº¯¼öÀÇ Á¤ÀÇ ------------------------------------------------------------ Å©±â Áö½ÃÀÚ µ¥ÀÌŸÇü ------------------------------------------------------------ 1¹ÙÀÌÆ® DB char, unsigned char 2¹ÙÀÌÆ® DW int, unsigned, enum, ±Ù°Å¸® Æ÷ÀÎÅÍ 4¹ÙÀÌÆ® DD long, unsigned long, ¿ø°Å¸® Æ÷ÀÎÅÍ ------------------------------------------------------------ * À§¿Í °°ÀÌ Á¤ÀÇÇÑ µÚ PUBLIC ¼±¾ðÀ» ÇÏ¸é ¿ÜºÎº¯¼ö°¡ µÇ°í ±×·¸Áö ¾ÊÀ¸¸é Á¤Àûº¯¼ö°¡ µÈ´Ù. ÇÑÆí Áö±ØÈ÷ ÁÖÀÇÇØ¾ß ÇÒ °ÍÀÌ µüÇÑ °¡Áö Àִµ¥ ±×°ÍÀº Æ÷ÀÎÅÍ º¯¼ö (¶Ç´Â »ó¼ö)¸¦ Á¤ÀÇÇÒ ¶§ÀÌ´Ù. ¾î¼Àºí¸® ¼öÁØ¿¡¼­ Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â µ¥ÀÌ Å¸ÇüÀº ¿ÏÀüÈ÷ ¹«½ÃµÈ´Ù. Áï, ¾î¶² char *Çü Æ÷ÀÎÅÍ¿Í int *Çü Æ÷ÀÎÅÍ°¡ ÀÖÀ» ¶§, C ¼öÁØ¿¡¼­´Â ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ ¸íÈ®ÇÏ°Ô ¼­·Î°¡ ±¸º°µÇÁö¸¸, ¾î ¼Àºí¸® ¼öÁØ¿¡¼­´Â ¹®¹ýÀûÀ¸·Î ÀüÇô ±¸º°µÇÁö ¾Ê´Â´Ù. ±×·¡¼­ ¾î¼Àºí¸® ¼ö ÁØ¿¡¼­ Æ÷ÀÎÅÍÀÇ ±¸ºÐÀº µü µÎ °¡Áö¿¡ ÀÇÁ¸ÇÑ´Ù. [1] ±Ù°Å¸® Æ÷ÀÎÅÍÀÌ³Ä ¿ø°Å¸® Æ÷ÀÎÅÍÀ̳Ä? (Á¤±ÔÈ­°¡ ¿ä±¸µÇ´Â °Å´ë Æ÷ÀÎ ÅÍ´Â C ¼öÁØ¿¡¼­¸¸ Áö¿øµÊ) Áï, 2¹ÙÀÌÆ® Å©±âÀÇ Æ÷ÀÎÅÍÀÌ³Ä 4¹ÙÀÌÆ® Å©±âÀÇ Æ÷ÀÎÅÍÀ̳Ä? [2] ±Ù°Å¸® Æ÷ÀÎÅÍÀÏ °æ¿ì¿¡ ¾î´À ¼¼±×¸ÕÆ®¿¡ ´ëÇÑ ¿É¼ÂÀ̳Ä? ÀϹÝÀûÀÎ µ¥ ÀÌŸ Æ÷ÀÎÅÍ(data pointer)¶ó¸é DSÀÇ ¿É¼ÂÀÏ Å×°í ÇÔ¼ö Æ÷ÀÎÅÍ(functi on pointer)¶ó¸é CSÀÇ ¿É¼ÂÀÏ °ÍÀÌ´Ù. ±× ¹Û¿¡ _ss, _es µîÀÇ ¹øÁöÁö Á¤ ¼ö½ÄÀÚ¸¦ ¾²¸é °¢°¢ SSÀÇ ¿É¼Â, ESÀÇ ¿É¼ÂÀÌ µÉ ¼öµµ ÀÖ´Ù(Turbo C 2.0 User's Guide 354ÂÊ Âü°í). [1]¹øÀÇ ±¸ºÐ¿¡ ÀÇÇÏ¸é ´ÙÀ½°ú °°ÀÌ Æ÷ÀÎÅÍ º¯¼ö(¶Ç´Â »ó¼ö)¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. DW º¯¼ö¸í --- ±Ù°Å¸® Æ÷ÀÎÅÍ º¯¼öÀÇ Á¤ÀÇ DDº¯¼ö¸í --- ¿ø°Å¸® Æ÷ÀÎÅÍ º¯¼öÀÇ Á¤ÀÇ À§¿¡¼­ ±Ù°Å¸® Æ÷ÀÎÅÍ º¯¼ö¸¦ Á¤ÀÇÇÒ ¶§¿¡´Â, ÀÚ½ÅÀÌ ¾î¼Àºí¸®¿¡ ´ëÇØ µµÅÕ´Ù°í »ý°¢µÇÁö ¾Ê´Â´Ù¸é, ¹Ýµå½Ã ¾î´À ¼¼±×¸ÕÆ®ÀÇ ¿É¼ÂÀÎÁö¸¦ ¸í½ÃÀû À¸·Î ¹àÈ÷´Â °ÍÀÌ ÇÕ´çÇÏ´Ù. ¹àÈ÷´Â ¹æ¹ýÀº <Ç¥ 1>ÀÇ ¸Ç ¿À¸¥ÂÊ ¿­¿¡ »ó¼¼ È÷ ¾ð±ÞÇØ ³õ¾ÒÀ¸´Ï, ºÎµð ºü¶ß¸®Áö ¾Êµµ·Ï ÁÖÀÇÇϱ⠹ٶõ´Ù. ¸¹ÀÌ ¾²ÀÌ´Â ¼ÒÇü ¹× ´ëÇü ¸ðµ¨ÀÇ °æ¿ì´Â <Ç¥ 3>¿¡ ´Ù½Ã Çѹø ³ª¿­Çß´Ù. ¿Ö ±×·¡¾ß ÇÏ ´Â°¡ µûÁöÁö ¸»°í ±×Àú °ø½ÄÀ̶ó°í »ý°¢ÇÏ°í ´Þ´Þ ¿Ü¿ì¸é °ñÄ¡ ½âÈú ÇÊ¿ä ¾ø¾î¼­ ÁÁÀ» °ÍÀÌ´Ù. <Ç¥ 3> Æ÷ÀÎÅÍÀÇ Á¾·ù¿¡ µû¸¥ Á¤ÀÇ ¹æ¹ý +--------+----------------------+------------------+ | ÃʼÒÇü | ±Ù°Å¸® ÇÔ¼ö Æ÷ÀÎÅÍ | DW _TEXT:º¯¼ö¸í | +--------+----------------------+------------------+ | ¼ÒÇü | ±Ù°Å¸® µ¥ÀÌŸ Æ÷ÀÎÅÍ | DW DGROUP:º¯¼ö¸í | +--------+----------------------+------------------+ | ´ëÇü | ¿ø°Å¸® ÇÔ¼ö Æ÷ÀÎÅÍ | DD º¯¼ö¸í | +--------+----------------------+------------------+ | | ¿ø°Å¸® µ¥ÀÌŸ Æ÷ÀÎÅÍ | DD DGROUP:º¯¼ö¸í | +--------+----------------------+------------------+ <Ç¥ 3>¿¡¼­ _TEXT´Â CSÀÇ ¿É¼ÂÀÓÀ» Ç¥½ÃÇÏ°í DGROUPÀº DSÀÇ ¿É¼ÂÀÓÀ» Ç¥½ÃÇÑ´Ù. --------------------------------------------------------------------- 10 ¿ÜºÎ¸íĪÀÇ Á¤ÀÇ¿¡¼­ ÁÖÀÇÇÒ Á¡ --------------------------------------------------------------------- ¾î¼Àºí¸® ¼öÁØ¿¡¼­ÀÇ ¿ÜºÎ¸íĪ(external identifier)¿¡ ¼ÓÇÏ´Â °ÍÀº C ¼öÁØ¿¡¼­ÀÇ ¿ÜºÎº¯¼ö¿Í (¿ÜºÎ)ÇÔ¼öÀÇ µÎ °¡Áö »ÓÀÌ´Ù. ¿©±â¼­ ¿ÜºÎÇÔ¼ö¶õ Á¤ÀûÇÔ¼ö°¡ ¾Æ´Ñ ´Ù¸¥ ¸ðµç ÀϹÝÀûÀÎ ÇÔ¼ö¸¦ ¶æÇÑ´Ù. ´Ù¸¥¸íĪ°ú ´Þ¸® ¿ÜºÎ¸íĪÀº Ç×»ó PUBLIC¹®À» ½á¼­ ¿ÜºÎ(´Ù¸¥ ¸ðµâ) ¿¡ ±× Á¸À縦 ¾Ë·Á¾ß ÇÔÀº ÀÌ¹Ì Àß ¾Ë°í ÀÖÀ¸¸®¶ó ¹Ï´Â´Ù. ´Ù¸¸ ¿©±â¼­ ÁÖ ÀÇÇÒ Á¡Àº ´ÙÀ½°ú °°´Ù. +------------------------------------------------+ | ¾î¼Àºí¸® ¼öÁØ¿¡¼­ÀÇ ¸ðµç ¿ÜºÎ¸íĪÀº ±× ¼±µÎ¿¡ | | Ãß°¡ÀûÀÎ ¹ØÁÙ¹®ÀÚ '_'°¡ µ¡ºÙ¿©Á®¾ß ÇÑ´Ù. | +------------------------------------------------+ "Ãß°¡ÀûÀÎ"À̶ó´Â ´ë¸ñ¿¡ À¯ÀÇÇϱ⠹ٶõ´Ù. µû¶ó¼­ C ¼öÁØ¿¡¼­ ÀÌ¹Ì ¸íĪÀÌ ¹ØÁÙ¹®ÀÚ·Î ½ÃÀÛÇÏ´õ¶óµµ ¾î¼Àºí¸® ¼öÁØ¿¡¼­´Â ¹ØÁÙ¹®ÀÚ°¡ Ãß°¡·Î Çϳª ´õ ºÙ¾î¾ß ÇÑ´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°À¸¸ç ½Ç·Ê´Â <¸®½ºÆ® 8>¸¦ Âü°í Çϱ⠹ٶõ´Ù. C ¼öÁØ ¾î¼Àºí¸®¾î ¼öÁØ ------------------------- extvar _extvar _extvar __extvar ÇÑÆí C¿¡¼­´Â ¸ðµç ¿ÜºÎ¸íĪ(°ø¿ë(public)¸íĪ Æ÷ÇÔ)¿¡¼­ ´ë¼Ò¹®ÀÚ°¡ ±¸º°µÇ¾î¾ß ÇÑ´Ù(case-sensitive). µû¶ó¼­ ¸µÄ¿¸¦ »ç¿ëÇÒ ¶§ ´ë¼Ò¹®ÀÚ¸¦ ±¸º°Çϵµ·Ï ÇØ¾ß ÇÑ´Ù. ´ë¼Ò¹®ÀÚ¸¦ ±¸º°Çϵµ·Ï ¸µÄ¿¿¡°Ô Áö½ÃÇÏ´Â ¹æ¹ýÀº ÇØ´ç ¿É¼ÇÀ» ÁöÁ¤ÇÏ ´Â °ÍÀÌ´Ù. Åͺ¸ ¾î¼Àºí·¯ tasm¿Í Åͺ¸ ¸µÄ¿ tlink¸¦ ¾µ ¶§¿¡´Â °¢°¢ /mx, /c ¿É¼ÇÀ» ÁöÁ¤ÇÏ¸é µÇ°í, ¸ÅÅ©·Î ¾î¼Àºí·¯ masm°ú ¸µÄ¿ link¸¦ ¾µ ¶§¿¡´Â °¢°¢ /MX, /NOI ¿É¼ÇÀ» ÁöÁ¤ÇÏ¸é µÈ´Ù. ÀÚ¼¼ÇÑ »çÇ×Àº Áö¸é»ó ´ÙÀ½ ȸ·Î ¹Ì·ç°Ú´Ù. --------------------------------------------------------------------- 11 Á¤Àû µ¥ÀÌÅÍ Á¤ÀÇÀÇ ½Ç·Ê --------------------------------------------------------------------- ÀÚ, ±×·³ ÀÌÁ¦±îÁö Á¤Àû µ¥ÀÌÅÍÀÇ Á¤ÀÇ¿¡ °üÇØ ÀÍÈù °ÍÀ» ÃÑÁ¤¸®ÇØ º¸ ÀÚ. <¸®½ºÆ® 7>ÀÇ statdata.c´Â °¢Á¾ Á¤Àû µ¥ÀÌÅ͵éÀÇ Á¤ÀǸ¦ C·Î ÇØ ³õÀº °ÍÀÌ´Ù. <¸®½ºÆ® 8>Àº ¾Æ·¡¿Í °°ÀÌ ¼ÒÇü ¸ðµ¨¿¡¼­ statdat.c¸¦ ÄÄÆÄÀÏÇÑ °á°úÀÎ statdata.asmÀ» ¾Ë¾Æº¸±â ÁÁ°Ô Á¤¸®ÇÑ °ÍÀÌ´Ù. C:\TURBOC\WORK>tcc -S statdata <¸®½ºÆ® 8>¿¡¼­ À¯ÀÇÇÒ Á¡Àº Åͺ¸ C°¡ ³»ºÎÀûÀ¸·Î ³»ºÎÁ¤Àûº¯¼ö¿¡ º° µµÀÇ ¸íĪÀ» ºÎ¿©ÇÏÁö ¾Ê´Â´Ù´Â Á¡ÀÌ´Ù. ±¸Ã¼ÀûÀ¸·Î ¸»Çؼ­ µ¶ÀÚÀûÀÎ ¸íĪ À» ºÙÀÌÁö ¾ÊÀº ä·Î DW, DD µîÀ» ½á¼­ °ø°£¸¸ ¸¶·ÃÇÑ µÚ, Â÷ÈÄ¿¡ ÂüÁ¶ÇÒ ¶§¿¡´Â ÇØ´ç ¼¼±×¸ÕÆ®ÀÇ ¼±µÎ¸¦ °¡¸®Å°´Â d@ ¶Ç´Â b@¿¡ ¿É¼ÂÀ» ´õÇؼ­ Âü Á¶ÇÑ´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î½á ´Ù¸¥ ÇÔ¼ö¿¡ ±× ¸íĪÀÌ ¾Ë·ÁÁöÁö ¾Ê´Â È¿°ú¸¦ °¡ Á®¿Â´Ù. ½Ç·Ê´Â <¸®½ºÆ® 9>ÀÇ _dummy ÇÔ¼ö ³»ÀÇ µÎ¹ø° mov ¸í·É¿¡¼­ ãÀ» ¼ö ÀÖ´Ù. ÀÌ´Â ¹®ÀÚ¿­ »ó¼ö°¡ º°µµÀÇ ¸íĪ ¾øÀÌ s@·Î ½ÃÀÛÇÏ´Â ¿µ¿ª¿¡ ³õÀδٴ Á¡°ú ¶È°°´Ù. ±×·¡¼­ ¹®ÀÚ¿­ »ó¼ö´Â Åͺ¸ C¿¡ ÀÇÇØ ³»ºÎÁ¤Àûº¯¼ö¿Í µ¿µîÇÏ °Ô Ãë±ÞµÈ´Ù°í ¸»ÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ´ÜÁö Â÷ÀÌÁ¡À̶ó¸é ¹®ÀÚ¿­ »ó¼ö´Â Ç× »ó ISD¿¡ ¼ÓÇÑ s@¿¡ ³õÀÌ´Â µ¥ ¹ÝÇÏ¿©, ³»ºÎÁ¤Àûº¯¼ö´Â ÃʱâÈ­ÀÇ ¿©ºÎ¿¡ µû¶ó ISD ¶Ç´Â UISD ¿µ¿ª¿¡ ³õÀδٴ Á¡¸¸ÀÌ ´Ù¸¦ »ÓÀÌ´Ù. Âü°í·Î s@, d@, b@´Â °¢ ¸ðµâ¸¶´Ù Çϳª¾¿ Á¸ÀçÇϸç, ¹°·Ð ¿ÜºÎ¸íĪÀÌ ¾Æ´Ï±â ¶§¹®¿¡ ¸µÅ© ½Ã ¼­·Î Ãæµ¹ÇÏÁö ¾Ê´Â´Ù. <¸®½ºÆ® 7> °¢Á¾ Á¤Àû µ¥ÀÌÅÍÀÇ Á¤ÀÇ --------------------------------------------------------------------- /* File STATDATA.C */ int UISDvar; --- ÃʱâÄ¡¸¦ ¸í½ÃÇÏÁö ¾Ê¾ÒÀ¸¹Ç·Î UISD, ½ÇÇà Á÷ÈÄ 0À¸·Î ÃʱâÈ­µÈ´Ù. int ISDvar = 0; --- ÃʱâÄ¡°¡ 0ÀÌÁö¸¸ ISDÀÓ¿¡ ÁÖÀÇ char *neardataptr; --- ±Ù°Å¸® µ¥ÀÌÅÍ Æ÷ÀÎÅÍ char far *fardataptr; --- ¿ø°Å¸® µ¥ÀÌÅÍ Æ÷ÀÎÅÍ void (*nearfuncptr)(void); --- ±Ù°Å¸® ÇÔ¼ö Æ÷ÀÎÅÍ void (far *farfuncptr)(void); --- ¿ø°Å¸® ÇÔ¼ö Æ÷ÀÎÅÍ int extvar; --- ¸íĪ¿¡ ¹ØÁÙ¹®ÀÚ°¡ Ãß°¡ÀûÀ¸·Î int _extvar; --- µ¡ºÙÀ½À» È®ÀÎÇÒ °Í static int extstaticvar; --- ¿ÜºÎÁ¤Àûº¯¼ö (ÇÔ¼ö ¿ÜºÎ¿¡¼­ Á¤ÀÇµÈ Á¤Àûº¯¼ö) ¸íĪ¿¡ _°¡ µ¡ºÙÁö ¾ÊÀ½À» È®ÀÎÇÒ °Í void dummy(void) { static int instaticvar = 0; --- ³»ºÎÁ¤Àûº¯¼ö (ÇÔ¼ö ³»ºÎ¿¡¼­ Á¤ÀÇµÈ Á¤Àûº¯¼ö) µ¶ÀÚÀûÀÎ ¸íĪÀ» °¡ÁöÁö ¾ÊÀ½À» È®ÀÎÇÒ °Í instaticvar = extstaticvar; } --------------------------------------------------------------------- <¸®½ºÆ® 8> <¸®½ºÆ® 7>À» ¾î¼Àºí¸®·Î ÄÄÆÄÀÏ ÇÑ ÈÄ Á¤¸®ÇÑ °á°ú --------------------------------------------------------------------- ;************************************************ ; statdata ¸ðµâÀÇ ¾î¼Àºí¸® ¸®½ºÆ® ; (¼ÒÇü ¸Þ¸ð¸® ¸ðµ¨) ;************************************************ _TEXT SEGMENT BYTE PUBLIC 'CODE' ASSUME cs:_TEXT,ds:DGROUP,ss:DGROUP _dummy PROC NEAR mov ax,WORD PTR DGROUP:extstaticvar mov WORD PTR DGROUP:b@,ax ret | _dummy ENDP ³»ºÎÁ¤Àûº¯¼ö´Â º°µµÀÇ ¸íĪÀ» °¡ÁöÁö ¾ÊÀ¸¹Ç·Î b@¿¡ ¿É¼Â(¿©±â¼­´Â +0)À» ´õÇؼ­ ÂüÁ¶ÇÑ´Ù. _TEXT ENDS DGROUP GROUP _DATA,_BSS _DATA SEGMENT WORD PUBLIC 'DATA' d@ LABEL BYTE --- ÃʱâÈ­µÈ ³»ºÎÁ¤Àûº¯¼ö ¿µ¿ªÀÇ ¼±µÎ¸¦ d@w LABEL WORD --- °¡¸®Å°´Â ÀÏÁ¾ÀÇ Æ÷ÀÎÅÍ »ó¼ö _ISDvar LABEL WORD DW 0 s@ LABEL BYTE --- ¹®ÀÚ¿­ »ó¼öµéÀº ÀÌ°÷¿¡ ¸ð¾Æ µÐ´Ù. _DATA ENDS _BSS SEGMENT WORD PUBLIC 'BSS' b@ LABEL BYTE --- ÀÌ ¸ðµâÀÇ _BSS ¼¼±×¸ÕÆ®ÀÇ ¼±µÎ¸¦ b@w LABEL WORD --- °¡¸®Å°´Â ÀÏÁ¾ÀÇ Æ÷ÀÎÅÍ »ó¼ö DB 2 dup (?) --- ³»ºÎÁ¤Àûº¯¼ö instaticvar¸¦ À§ÇÑ °ø°£, º¸´Ù½ÃÇÇ ¸íĪÀÌ ºÙ¾îÀÖÁö ¾Ê´Ù. _extvar LABEL WORD DB 2 dup (?) _UISDvar LABEL WORD DB 2 dup (?) __extvar LABEL WORD --- ¹ØÁÙ¹®ÀÚ°¡ Ãß°¡ÀûÀ¸·Î µ¡ºÙ¿©Á³´Ù. DB 2 dup (?) _fardataptr LABEL dWORD DB 4 dup (?) _farfuncptr LABEL dWORD DB 4 dup (?) _neardataptr LABEL WORD DB 2 dup (?) _nearfuncptr LABEL WORD DB 2 dup (?) extstaticvar LABEL WORD --- ¿ÜºÎ¸íĪÀÌ ¾Æ´Ï¹Ç·Î DB 2 dup (?) ¹ØÁÙ¹®ÀÚ°¡ µ¡ºÙÁö ¾Ê¾Ò´Ù. _BSS ENDS _extstaticvar EQU extstaticvar PUBLIC _nearfuncptr PUBLIC _neardataptr PUBLIC _farfuncptr PUBLIC _fardataptr PUBLIC __extvar PUBLIC _UISDvar PUBLIC _extvar PUBLIC _dummy PUBLIC _ISDvar END --------------------------------------------------------------------- --------------------------------------------------------------------- 12 ´ÙÀ½¿¡´Â --------------------------------------------------------------------- À̹ø ´Þ¿¡ ¿ì¸®°¡ ¾Ë¾Æº» °ÍÀº Å©°Ô ´ÙÀ½°ú °°Àº ³»¿ëÀ¸·Î ¿ä¾àÇÒ ¼ö ÀÖ´Ù. 1. ISD¿Í UISDÀÇ ±¸ºÐ 2. ¼¼±×¸ÕÆ® ¹èÄ¡ ±ÔÄ¢ ¹× ¾î¼Àºí¸® ¸ðµâÀÇ ÀϹÝÀûÀÎ ¾ç½Ä 3. Á¤Àû µ¥ÀÌŸ(¿ÜºÎº¯¼ö ¹× Á¤Àûº¯¼ö)ÀÇ Á¤ÀÇ 4. ¿ÜºÎ¸íĪÀÇ Á¤ÀÇ¿¡¼­ ÁÖÀÇÇÒ Á¡ ¾ÆÁ÷ À̰͸¸À¸·Î´Â ¾î¼Àºí¸® ¸ðµâÀ» ÀÛ¼ºÇϱ⿡ ¿ªºÎÁ·ÀÌ´Ù. ±×°ÍÀº ´ÙÀ½ »çÇ×µé±îÁö ¿ÏÀüÇÏ°Ô ÀÍÈù ´ÙÀ½¿¡¾ß °¡´ÉÇØÁö±â ¶§¹®ÀÌ´Ù. 6, 8, 9¹ø »çÇ×Àº Áö³­ ´Þ¿¡ ´ëÃæÀº ¾ð±ÞÇß¾úÁö¸¸ ±×°É·Î´Â Á» ºÒÃæºÐÇÏ´Ù. 5. ´Ù¸¥ ¸ðµâ¿¡ Á¤ÀǵǾî ÀÖ´Â ¿ÜºÎ¸íĪÀÇ ÂüÁ¶ 6. (½Ç)¸Å°³º¯¼öÀÇ ÂüÁ¶ 7. ÀÚµ¿º¯¼ö Á¤ÀÇ ¹× ÂüÁ¶ 8. C ¸ðµâ¿¡¼­ ¾î¼Àºí¸® ¸ðµâÀÇ ÇÔ¼ö È£Ãâ 9. ¾î¼Àºí¸® ¸ðµâ¿¡¼­ C ¸ðµâÀÇ ÇÔ¼ö ¶Ç´Â ¶óÀ̺귯¸® ÇÔ¼öÀÇ È£Ãâ 10. ¾î¼Àºí·¯¿Í ¸µÄ¿ÀÇ »ç¿ë¹ý Áö¸é »çÁ¤»ó ÈĹݺο¡ ´ëÇÑ ¾ê±â´Â ´ÙÀ½ ȸ·Î ¹Ì·ï¾ß ÇÒ °Í °°´Ù. ´Ù À½ ´ÞÀÌ ´Ù°¡¿À±â Àü¿¡ À̹ø ȸÀÇ ¼³¸íÀ» ÃæºÐÈ÷ ¼ÒÈ­ÇØ ³»±â¸¦ ¹Ù¶ó¸ç ÀÌ ¸¸ ÁÙÀϱî ÇÑ´Ù.