ÀζóÀÎ ¾î¼Àºí¸®¸¦ »ç¿ëÇÒ ¶© ´ÙÀ½°ú °°Àº °ÍÀ» ¸í½ÃÇØ Áà¾ßÇÑ´Ù. ¹°·Ð »©°í »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.
¾î¼Àºí¸® ÄÚµå
output º¯¼ö
input º¯¼ö
°ªÀÌ ¹Ù²î´Â ·¹Áö½ºÅÍ
±×¸®°í »ç¿ëµÇ´Â ¹®¹ýÀÇ ÇüÅ´ ´ÙÀ½°ú °°´Ù.
__asm__ __volatile__ (asms : output : input : clobber); |
´ÙÀ½¿¡ ³ª¿À´Â °ÍÀÌ ÀζóÀÎ ¾î¼Àºí¸® ÀÓÀ» ³ªÅ¸³½´Ù. ANSI¿£ __asm__ À¸·Î¸¸ Á¤À¸µÇ¾î ÀÖÀ¸¹Ç·Î asm °ú °°Àº Ű¿öµå´Â »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.
ÀÌ Å°¿öµå¸¦ »ç¿ëÇϸé ÄÄÆÄÀÏ·¯´Â ÇÁ·Î±×·¡¸Ó°¡ ÀÔ·ÂÇÑ ±×·¡µµ ³²°ÜµÎ°Ô µÈ´Ù. Áï ÃÖÀûÈ ³ª À§Ä¡¸¦ ¿Å±â´Â µîÀÇ ÀÏÀ» ÇÏÁö ¾Ê´Â´Ù. ¿¹¸¦ µé¾î output º¯¼öÁß Çϳª°¡ ÀζóÀÎ ¾î¼Àºí¸®¿£ ¸í½ÃµÇ¾î ÀÖÁö¸¸ ´Ù¸¥ °÷¿¡¼ »ç¿ëµÇÁö ¾Ê´Â´Ù°í ÆÇ´ÜµÇ¸é ÄÄÆÄÀÏ·¯´Â ÀÌ º¯¼ö¸¦ ¾Ë¾Æ¼ Àß ¾ø¾ÖÁֱ⵵ ÇÑ´Ù. ÀÌ·± °æ¿ì ÀÌ·± °ÍÀ» °í·ÁÇØ ÇÁ·Î±×·¥À» ®´Ù¸é »ó°ü ¾ø°ÚÁö¸¸ ¸¸¿¡ Çϳª ÄÄÆÄÀÏ·¯°¡ ÀÚµ¿À¸·Î ÇØÁØ ÀÏ ¶§¹®¿¡ ¹ö±×°¡ ¹ß»ýÇÒ ¼öµµ ÀÖ´Ù. ±×·¯¹Ç·Î __volatile__ Ű¿öµå¸¦ »ç¿ëÇØ ÁÖ´Â °ÍÀÌ ÁÁ´Ù.
µû¿ÈÇ¥·Î µÑ·¯½ÎÀÎ ¾î¼Àºí¸® ÄÚµå. ÄÚµå ³»¿¡¼´Â %x°ú °°Àº ÇüÅ·Πinput, output ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ÄÄÆÄÀÏ ÇÏ¸é ÆÄ¶ó¹ÌÅͰ¡ ġȯµÈ ´ë·Î ¾î¼Àºí¸® ÄÚµå·Î ³ªÅ¸³´Ù.
º¯¼öµéÀ» Àû¾î ÁÖ°í °¢°¢Àº ½°Ç¥°í ±¸ºÐµÈ´Ù. °á°ú °ªÀ» Ãâ·ÂÇÏ´Â º¯¼ö¸¦ Àû´Â´Ù.
output°ú °°Àº ¹æ½ÄÀ¸·Î »ç¿ëÇϰí ÀζóÀÎ ¾î¼Àºí¸® Äڵ忡 ³Ñ°ÜÁÖ´Â ÆÄ¶ó¹ÌÅ͸¦ Àû´Â´Ù.
output, input¿¡ ¸í½ÃµÇ¾î ÀÖÁø ¾ÊÁö¸¸ asms¸¦ ½ÇÇàÇØ¼ °ªÀÌ º¯ÇÏ´Â °ÍÀ» Àû¾î ÁØ´Ù. °¢ º¯¼ö´Â ½°Ç¥·Î ±¸ºÐµÇ°í °¢°¢À» µû¿ÈÇ¥·Î °¨½ÎÁØ´Ù.
asms´Â ¹Ýµå½Ã ÀÖ¾î¾ßÇÏÁö¸¸ output, input, clobber´Â °¢°¢ ¾øÀ» ¼öµµ ÀÖ´Ù. ¸¸¾à clobber°¡ ¾ø´Â °æ¿ì ¶ó¸é clobber¿Í ¹Ù·Î ¾ÕÀÇ ÄÝ·Ð(:)À» °°ÀÌ ¾²Áö ¾Ê¾Æµµ µÈ´Ù. ¸¶Âù°¡Áö·Î input, clobber°¡ ¾ø´Ù¸é output±îÁö¸¸ ¾²¸é µÈ´Ù.
±×·¯³ª output, clobber´Â ÀÖ°í inputÀÌ ¾ø´Â °æ¿ì¿£ ´ÙÀ½°ú °°ÀÌ input ¸¸À» Á¦¿ÜÇÑ ³ª¸ÓÁö´Â ¹Ýµå½Ã ½áÁà¾ßÇÑ´Ù.
__asm__ __volatile__ (asms : output : : clobber); |
Áß°£¿¡ ÀÖ´Â °ÍÀÌ ¾ø´Â °æ¿ì¿£ ÇØ´ç Ç׸ñ¸¸À» ¾ø¾Ö°í ÄÝ·ÐÀº ±×´ë·Î ³»¹ö·ÁµÖ¾ß ´ÙÀ½ Çʵ尡 ¾î¶² °ÍÀ» ÀǹÌÇÏ´ÂÁö ³ªÅ¸³»°Ô µÈ´Ù.
ÀζóÀÎ ¾î¼Àºí¸®°¡ »ç¿ëµÈ ¿¹¸¦ µé¾îº¸ÀÚ. include/asm-i386/bitops.h¿¡ Á¤ÀǵǾî ÀÖ´Â ÇÔ¼ö´Ù.
/**
* test_and_set_bit - Set a bit and return its old value
* @nr: Bit to set
* @addr: Address to count from
*
* This operation is atomic and cannot be reordered.
* It also implies a memory barrier.
*/
static __inline__ int test_and_set_bit(int nr, volatile void * addr)
{
int oldbit;
__asm__ __volatile__( LOCK_PREFIX
"btsl %2,%1\n\tsbbl %0,%0"
:"=r" (oldbit),"=m" (ADDR)
:"Ir" (nr) : "memory");
return oldbit;
} |
ÀζóÀÎ ¾î¼Àºí¸® Áß asms¿¡ ÇØ´çÇÏ´Â ½ÇÁ¦ Äڵ带 Àû´Â ºÎºÐÀº AT&T ¾î¼Àºí¸® ¹®¹ýÀ» µû¸£°í ¿©±â¿¡ ÀûÀÎ ±×´ë·Î°¡ ÄÄÆÄÀÏ ÈÄ gasm¿¡ ³Ñ°ÜÁö±â ¶§¹®¿¡ gasmÀÇ ¹®¹ýÀ» µû¶ó¾ßÇÑ´Ù.
¸í·ÉÀÇ ±¸ºÐÀº ¼¼¹ÌÄÝ·Ð(;)À̳ª °³Ç๮ÀÚ(\n)À¸·Î ÇÑ´Ù.
±×¸®°í gasmÀÇ ¹®¹ý¿¡¼ ÁÖÀÇÇÒ °ÍÀº ·¹Áö½ºÅ͸¦ %ax°ú °°Àº ½ÄÀ¸·Î ¾´´Ù´Â °Í°ú ÀÎÅÚ ¾î¼Àºí¸®¿Í´Â ´Þ¸® destinationÀÌ µÚ¿¡ ³ª¿Â´Ù´Â °ÍÀÌ´Ù. ±×·¯¹Ç·Î ÀÎÅÚ ¹®¹ý¿¡ Àͼ÷ÇÑ »ç¶÷Àº »ç°íÀÇ ÀüȯÀÌ ÇÊ¿äÇÒ °ÍÀÌ´Ù.
ÀζóÀÎ ¾î¼Àºí¸®¿¡¼± %0, %1µîÀ» »ç¿ëÇØ input, output ¿ÀÆÛ·£µå¸¦ ³ªÅ¸³½´Ù. output¿¡¼ ºÎÅÍ ½ÃÀÛÇØ input¿¡ ³ª¿µÈ º¯¼öµéÀÇ ¼ø¼ ´ë·Î %0, %1, ... À¸·Î ¹øÈ£°¡ ¸Å°ÜÁø´Ù.
¸ðµç ÄÚµå´Â µû¿ÈÇ¥ ¾È¿¡ ÀÖ¾î¾ßÇϱ⠶§¹®¿¡ ¸¹Àº ¼öÀÇ ¸í·ÉÀ» ÇÑÁÙ·Î ¾²¸é º¸±âµµ ¾ÊÁÁ±â ¶§¹®¿¡ ¸í·É ¼ö°¡ ¸¹¾ÆÁö¸é °¢ ¸í·ÉÀ» µû¿ÈÇ¥·Î °¨½Î°í µÚ¿¡ \t\nÀ» ³Ö°í ´ÙÀ½ ÁÙ¿¡ ´Ù½Ã ¸í·ÉÀ» µû¿ÈÇ¥·Î ÀûÀ¸¸é µÈ´Ù. ¾Æ·¡ÀÇ ¿¹¸¦ º¸¸é ÀÌÇØ°¡ ½¬¿ï °ÍÀÌ´Ù.
static __inline__ int find_first_zero_bit(void * addr, unsigned size)
{
int d0, d1, d2;
int res;
if (!size)
return 0;
/* This looks at memory. Mark it volatile to tell gcc not to move it around */
__asm__ __volatile__(
"movl $-1,%%eax\n\t"
"xorl %%edx,%%edx\n\t"
"repe; scasl\n\t"
"je 1f\n\t"
"xorl -4(%%edi),%%eax\n\t"
"subl $4,%%edi\n\t"
"bsfl %%eax,%%edx\n"
"1:\tsubl %%ebx,%%edi\n\t"
"shll $3,%%edi\n\t"
"addl %%edi,%%edx"
:"=d" (res), "=&c" (d0), "=&D" (d1), "=&a" (d2)
:"1" ((size + 31) >> 5), "2" (addr), "b" (addr));
return res;
} |
¹Ù·Î À§ÀÇ ¿¹¿¡¼ %eax°¡ ¾Æ´Ï¶ó %%eax¶ó°í ¾º¾îÁø °ÍÀÌ Àִµ¥ %%´Â gasm¿¡ ³Ñ°ÜÁú ¶§ %·Î ÇØ¼®µÇ ³Ñ°ÜÁø´Ù. Áï output, input¿¡ ·¹Áö½ºÅ͸¦ Á÷Á¢ ÁöÁ¤ÇÒ ¶§ ÀÌ·¸°Ô ¾´´Ù. ±×·¯³ª output, input¿¡ ¾Æ¹« °Íµµ ÁöÁ¤µÇ¾î ÀÖÁö ¾Ê´Ù¸é %%´Â %·Î ¹Ù²îÁö ¾Ê´Â´Ù. ±×·¯¹Ç·Î %eax¿Í °°ÀÌ ½á¾ß¸¸ ÇÑ´Ù.
ÀÌÀüÀÇ ¿¹µé¿¡¼ º¸¸é output, input¿¡ ÁöÁ¤µÈ °ÍÀÌ ¹«Ã´ ¾î·Æ°Ô µÇ¾î Àִµ¥ output, inputÀº constraints¿Í º¯¼ö À̸§ÀÌ ½°Ç¥·Î ±¸ºÐµÈ ¸®½ºÆ®·Î ÀÌ·ç¾îÁ® ÀÖ´Ù.
constraints´Â Àǹ̸¦ ³ªÅ¸³»´Â ¹®ÀÚ¿Í ¸î°¡Áö modifier¸¦ Á¶ÇÕÇØ ¸¸µé¾îÁø´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº 'info gcc' ¸¦ ÇØ¼ ::Constraints Ç׸ñ¿¡¼ ã±æ ¹Ù¶õ´Ù. ¾Æ·¡ ¿°ÅµÈ °ÍÀº ¸î °¡Áö¸¸À» °£Ã߸° °ÍÀÌ´Ù.
¾ÆÅ°ÅØÃİ¡ Áö¿øÇÏ´Â ¸ðµç Á¾·ùÀÇ ¸Þ¸ð¸® ¾îµå·¹½º¸¦ »ç¿ëÇÏ´Â ¿ÀÆÛ·£µå
¿É¼ÂÈ °¡´ÉÇÑ ¾îµå·¹½º¸¦ »ç¿ëÇÏ´Â ¸Þ¸ð¸® ¿ÀÆÛ·£µå
¿É¼ÂÈ ºÒ°¡´ÉÇÑ ¾îµå·¹½º¸¦ »ç¿ëÇÏ´Â ¸Þ¸ð¸® ¿ÀÆÛ·£µå
ÀÚµ¿ °¨¼Ò(¹Ì¸® °¨¼ÒÇϰųª ³ªÁß¿¡ °¨¼ÒÇÑ´Ù) ¾îµå·¹½º¿ë ¸Þ¸ð¸® ¿ÀÆÛ·£µå
ÀÚµ¿ Áõ°¡(¹Ì¸® Áõ°¡Çϰųª ³ªÁß¿¡ Áõ°¡ÇÑ´Ù) ¾îµå·¹½º¿ë ¸Þ¸ð¸® ¿ÀÆÛ·£µå
ÀÏ¹Ý ·¹Áö½ºÅÍ »ç¿ë ¿ÀÆÛ·£µå
½Ã½ºÅÛ¿¡ µû¸¥ ·¹Áö½ºÅ͸¦ ³ªÅ¸³»´Â ´Ù¸¥ ¿ÀÆÛ·£µå·Î d, a, f´Â °¢°¢ 68000/68020¿¡¼ µ¥ÀÌÅÍ, ¾îµå·¹½º, ÇÃ·ÎÆÃÆ÷ÀÎÆ® ·¹Áö½ºÅ͸¦ ³ªÅ¸³½´Ù.
immediate Á¤¼ö °ªÀ» ³ªÅ¸³»´Â ¿ÀÆÛ·£µå. ½Éº¼·ÎµÈ »ó¼öµµ ¿©±â¿¡ ÇØ´çÇÑ´Ù.
immediate Á¤¼ö °ªÀ¸·Î ¾Ë·ÁÁø Á¤¼ö °ªÀ» ³ªÅ¸³½´Ù. ¸¹Àº ½Ã½ºÅÛÀÌ ¾î¼ÀºíÇÒ ¶§ ÇÑ ¿öµå ÀÌÇÏÀÇ ¿ÀÆÛ·£µå¿ë »ó¼ö¸¦ Áö¿øÇÏÁö ¾ÊÀ¸¹Ç·Î 'i'º¸´Ü 'n'À» »ç¿ëÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.
½Ã½ºÅÛ¿¡ µû¶ó ƯÁ¤ ¹üÀ§ ³»ÀÇ °ªÀ» ³ªÅ¸³»´Â ¿ÀÆÛ·£µå. 68000¿¡¼± 'I'°¡ 1¿¡¼ 8±îÁöÀÇ °ªÀ» ³ªÅ¸³½´Ù. À̰ÍÀº ½ÃÇÁÆ® ¸í·É¿¡¼ Çã¿ëµÈ ½ÃÇÁÆ® Ä«¿îÆ®ÀÇ ¹üÀ§´Ù.
immediate ÇÃ·ÎÆÃ ¿ÀÆÛ·£µå·Î È£½ºÆ®¿Í °°Àº Ÿ°Ù ÇÃ·ÎÆÃ Æ÷ÀÎÆ® Æ÷¸ËÀÎ °æ¿ì¿¡¸¸ »ç¿ë °¡´É.
immediate ÇÃ·ÎÆÃ ¿ÀÆÛ·£µå.
ƯÁ¤ ¹üÀ§ ³»ÀÇ °ªÀ» ³ªÅ¸³»´Â ÇÃ·ÎÆÃ ¿ÀÆÛ·£µå·Î ½Ã½ºÅÛ¿¡ µû¶ó ´Ù¸£´Ù.
°ªÀÌ ¸íÈ®È÷ Á¤ÇØÁöÁö ¾ÊÀº immediate Á¤¼ö¸¦ ³ªÅ¸³»´Â ¿ÀÆÛ·£µå
°ªÀÌ ¸íÈ®È÷ Á¤ÇØÁöÁö ¾ÊÀº immediate Á¤¼ö¸¦ ³ªÅ¸³»´Â ¿ÀÆÛ·£µå. 's'¸¦ 'i'? ´ë½Å ¾²´Â ÀÌÀ¯´Â Á»´õ ÁÁÀº Äڵ带 ¸¸µé¾î³¾ ¼öµµ Àֱ⠶§¹®ÀÌ´Ù.
Ư¼ö ·¹Áö½ºÅ͸¦ Á¦¿ÜÇÑ ÀÏ¹Ý ·¹Áö½ºÅÍ, ¸Þ¸ð¸® ȤÀº immediate Á¤¼ö Áß ¾Æ¹«°ÍÀ̳ª ³ªÅ¸³»´Â ¿ÀÆÛ·£µå.
°°ÀÌ »ç¿ëµÈ ¿ÀÆÛ·£µåÀÇ ¹øÈ£¸¦ ³ªÅ¸³¿.
¿Ã¹Ù¸¥ ¸Þ¸ð¸® ¾îµå·¹½º¸¦ ³ªÅ¸³»´Â ¿ÀÆÛ·£µå. "load address"¿Í "push address" ¸í·ÉÀ» À§ÇÑ °Í.
Q¿¡¼ U±îÁöÀÇ ¹®ÀÚ´Â ½Ã½ºÅÛ¿¡ µû¶ó º¯ÇÏ´Â ¿©·¯ ´Ù¸¥ ¿ÀÆÛ·£µå¸¦ ÀǹÌÇÑ´Ù.
¿ÀÆÛ·£µå°¡ ¾²±â Àü¿ëÀÓÀ» ³ªÅ¸³¿. ÀÌÀü °ªÀº ¾ø¾îÁö°í »õ·Î¿î °ªÀ¸·Î ±³Ã¼µÊ.
Àбâ, ¾²±â ¸ðµÎ °¡´É. '='´Â º¸Åë output¿ë '+'´Â input/output ¸ðµÎ¿¡ »ç¿ë °¡´ÉÇÏ´Ù. ³ª¸ÓÁö ´Ù¸¥ ¸ðµç ¿ÀÆÛ·£µå´Â input Àü¿ëÀ¸·Î °£ÁֵȴÙ.
"earlyclobber" ¿ÀÆÛ·£µå¸¦ ³ªÅ¸³»°í input ¿ÀÆÛ·£µå¸¦ »ç¿ëÇÏ´Â ¸í·ÉÀÌ ³¡³ª±â Àü¿¡ º¯°æ µÈ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ±×·¡¼ input ¿ÀÆÛ·£µå³ª ¸Þ¸ð¸® ¾îµå·¹½ºÀÇ ÀϺÎÀ» ³ªÅ¸³»´Â ·¹Áö½ºÅÍ¿£ ¸ø ¾´´Ù.
gcc´Â input º¯¼ö°¡ ´Ù »ç¿ëµÇ°í ³ª¸é output¿¡ »ç¿ëµÈ´Ù°í °¡Á¤Çϱ⠶§¹®¿¡ input¿¡ »ç¿ëµÈ º¯¼ö°¡ output°ú °°°Ô µÇ°í ¶Ç outputÀÌ input º¸´Ù ¸ÕÀú »ç¿ëµÇ´Â °æ¿ì°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. ÀÌ·± °æ¿ì¸¦ ¸·±â À§ÇØ output¿¡ »ç¿ëµÈ º¯¼ö°¡ inputÀÌ ¸ðµÎ »ç¿ëµÇ±â Àü¿¡ º¯°æµÉ ¼öµµ ÀÖ´Ù°í ¾Ë·ÁÁà¾ß¸¸ input°ú outputÀÌ °°¾ÆÁ® »ý±â´Â ¿¡·¯¸¦ ¸·À» ¼ö ÀÖ´Ù.
%µÚ¿¡ µû¶ó¿À´Â ¿ÀÆÛ·£µå·Î ´ëü °¡´ÉÇÔÀ» ³ªÅ¸³½´Ù. Á÷Á¢ ·¹Áö½ºÅ͸¦ ¸í½ÃÇÏ°í »ç¿ëÇÒ ¶§ %%eax µî°ú °°ÀÌ ÇÏ´Â °ÍÀ» ±â¾ïÇϴ°¡?
# ÀÌÈÄÀÇ ½°Ç¥°¡ ³ª¿Ã ¶§ ±îÁöÀÇ ¸ðµç ¹®ÀÚ¸¦ constraints·Î Ãë±ÞÇÏÁö ¾Ê´Â´Ù.
ÇÃ·ÎÆÃ Æ÷ÀÎÆ® ·¹Áö½ºÅÍ
0.0, 0.5, 1.0, 2.0, 3.0, 4.0, 5.0, 10.0 ÁßÀÇ Çϳª¸¦ ³ªÅ¸³»´Â ÇÃ·ÎÆÃ Æ÷ÀÎÆ® »ó¼ö
À½¼ö °ªÀÎ °æ¿ìÀÇ 'F'
µ¥ÀÌÅÍ ÇÁ·Î¼¼½Ì ¸í·É¿¡¼ À¯È¿ÇÑ immediate Á¤¼ö °ª ¿ÀÆÛ·£µå. 0¿¡¼ 255»çÀÌÀÇ 2ÀÇ ¹è¼ö °ªÀ» ³ªÅ¸³½´Ù.
-4095¿¡¼ 4095 »çÀÌÀÇ Á¤¼ö
'I'¸¦ ¸¸Á·ÇÏ´Â °ªÀ» 1ÀÇ º¸¼ö ÃëÇÑ °Í
'I'¸¦ ¸¸Á·ÇÏ´Â °ªÀ» À½¼ö·Î ÃëÇÑ °ª(2ÀÇ º¸¼ö)
0¿¡¼ 32 »çÀÌÀÇ Á¤¼ö °ª
ÇÑ ·¹Áö½ºÅÍ¿¡ ´ã°ÜÀÖ´Â Á¤È®ÇÑ ¾îµå·¹½º¸¦ ³ªÅ³»´Â ¸Þ¸ð¸®
constalt pool ³»ÀÇ ¾ÆÀÌÅÛ
ÇöÀç ÆÄÀÏÀÇ ÅØ½ºÆ® ¼¼±×¸ÕÆ® ³»ÀÇ ½Éº¼
'a', 'b', 'c', 'd' ·¹Áö½ºÅÍ
'a' ¶Ç´Â 'd' ·¹Áö½ºÅÍ (64ºñÆ® Á¤¼ö ¿ë)
ÇÃ·ÎÆÃ Æ÷ÀÎÆ® ·¹Áö½ºÅÍ
ù¹øÂ°(½ºÅÃÀÇ ÃÖ»óÀ§) ÇÃ·ÎÆÃ Æ÷ÀÎÆ® ·¹Áö½ºÅÍ
µÎ¹øÂ° ÇÃ·ÎÆÃ Æ÷ÀÎÆ® ·¹Áö½ºÅÍ
'a' ·¹Áö½ºÅÍ
'b' ·¹Áö½ºÅÍ
'c' ·¹Áö½ºÅÍ
'd' ·¹Áö½ºÅÍ
'di' ·¹Áö½ºÅÍ
'si' ·¹Áö½ºÅÍ
0¿¡¼ 31 »çÀÌÀÇ »ó¼ö(32ºñÆ® ½ÃÇÁÆ®¿ë)
0¿¡¼ 63 »çÀÌÀÇ »ó¼ö(64ºñÆ® ½ÃÇÁÆ®¿ë)
'0xff'
'0xffff'
0, 1, 2, 3 (lea ¸í·ÉÀ» À§ÇÑ ½ÃÇÁÆ®)
0¿¡¼ 255 »çÀÌÀÇ °ª(out ¸í·É ¿ë)
80387 ÇÃ·ÎÆÃ Æ÷ÀÎÆ® »ó¼ö¸¦ ³ªÅ¸³¿