16-1-´Ù.È£Ãâ ±Ô¾à

¾Õ Ç׿¡¼­ Add ÇÔ¼öÀÇ ¾î¼Àºí¸® Äڵ带 ÅëÇØ ½ºÅà ÇÁ·¹ÀÓÀÇ ½ÇÁ¦ ¸ð¾çÀ» È®ÀÎÇØ º¸¾Ò´Ù. Àμö´Â µÚÂʺÎÅÍ ¼ø¼­´ë·Î Àü´ÞÇϸç Àμö Àü´Þ¿¡ »ç¿ëÇÑ ½ºÅà ¿µ¿ªÀº È£Ãâ¿øÀÌ Á¤¸®Çߴµ¥ ÀÌ´Â C/C++ ¾ð¾îÀÇ ±âº» È£Ãâ ±Ô¾àÀÎ __cdeclÀÇ ½ºÅà ÇÁ·¹ÀÓ ¸ð¾çÀÏ »ÓÀÌ´Ù. È£Ãâ ±Ô¾àÀÌ ¹Ù²î¸é ½ºÅà ÇÁ·¹ÀÓÀÇ ¸ð¾ç°ú °ü¸® ¹æ¹ýµµ ´Þ¶óÁú ¼ö ÀÖ´Ù.

È£Ãâ ±Ô¾àÀº È£Ãâ¿ø°ú ÇÔ¼ö°£ÀÇ ¾à¼ÓÀ̹ǷΠ¾çÂÊÀÌ ´Ù¸¥ ÇüÅ·Π¾à¼ÓÀ» ÇÒ ¼öµµ ÀÖ´Â °ÍÀÌ´Ù. ±×·¸´Ù¸é __cdeclÀÌ ¾Æ´Ñ ´Ù¸¥ È£Ãâ ±Ô¾àÀº ¾î¶»°Ô ½ºÅà ÇÁ·¹ÀÓÀ» ÀÛ¼ºÇÏ´ÂÁö Â÷ÀÌÁ¡À» ºÐ¼®ÇØ º¸ÀÚ. È£Ã⠱Ծ࿡ µû¶ó Àμö¸¦ Àü´ÞÇÏ´Â ¹æ¹ý°ú ½ºÅÃÀÇ Á¤¸® Ã¥ÀÓ, ÇÔ¼öÀÇ À̸§À» ÀÛ¼ºÇÏ´Â ¹æ¹ýÀÌ ´Þ¶óÁø´Ù.

 

È£Ãâ ±Ô¾à

Àμö Àü´Þ

½ºÅà Á¤¸®

À̸§ ±ÔÄ¢

__cdecl

¿À¸¥ÂÊ ¸ÕÀú

È£Ãâ¿ø

_ÇÔ¼ö¸í

__stdcall

¿À¸¥ÂÊ ¸ÕÀú

ÇÔ¼ö

_ÇÔ¼ö¸í@ÀμöÅ©±â

__fastcall

ECX, EDX¿¡ ¿ì¼± Àü´Þ. ³ª¸ÓÁö´Â ¿À¸¥ÂÊ ¸ÕÀú

ÇÔ¼ö

@ÇÔ¼ö¸í@ÀμöÅ©±â

thiscall

¿À¸¥ÂÊ ¸ÕÀú, this Æ÷ÀÎÅÍ´Â ecx ·¹Áö½ºÅÍ·Î Àü´ÞµÈ´Ù.

ÇÔ¼ö

C++ À̸§ ±ÔÄ¢À» µû¸§.

naked

¿À¸¥ÂÊ ¸ÕÀú

ÇÔ¼ö

¾øÀ½

 

¸®ÅÏ°ªÀ» µ¹·Á ÁÖ´Â ¹æ½Äµµ È£Ã⠱Ծ࿡ µû¶ó ´Þ¶óÁú ¼ö Àִµ¥ ´ÙÇàÈ÷ ÇöÁ¸ÇÏ´Â ¸ðµç È£Ãâ ±Ô¾àÀÇ ¸®ÅÏ ¹æ½ÄÀº µ¿ÀÏÇÏ´Ù. 4¹ÙÀÌÆ®ÀÇ °ªÀ» µ¹·ÁÁÙ ¶§´Â eax ·¹Áö½ºÅ͸¦ »ç¿ëÇϸç 8¹ÙÀÌÆ®ÀÇ °ªÀ» ¸®ÅÏÇÒ ¶§´Â edx:eax ·¹Áö½ºÅÍ ½ÖÀ» »ç¿ëÇÑ´Ù. 8¹ÙÀÌÆ®¸¦ ÃÊ°úÇÏ´Â Å« ¸®ÅÏ°ª, ¿¹¸¦ µé¾î ±¸Á¶Ã¼ µîÀº Àӽà ¿µ¿ª¿¡ ¸®ÅÏÇÒ °ªÀ» ³Ö¾î µÎ°í ±× Æ÷ÀÎÅ͸¦ eax¿¡ ¸®ÅÏÇÑ´Ù.

__stdcall

Add ÇÔ¼öÀÇ È£Ãâ ±Ô¾àÀ» __stdcall·Î ¹Ù²ã º¸ÀÚ. __stdcallÀº À©µµ¿ìÁî API ÇÔ¼öµéÀÇ ±âº» È£Ãâ ±Ô¾àÀÌ¸ç ºñÁÖ¾ó º£ÀÌÁ÷µµ ÀÌ È£Ãâ ±Ô¾àÀ» »ç¿ëÇÑ´Ù. __cdecl°ú Àμö¸¦ Àü´ÞÇÏ´Â ¹æ¹ýÀº µ¿ÀÏÇ쵂 Àμö Àü´Þ¿¡ »ç¿ëµÈ ½ºÅÃÀ» Á¤¸®ÇÏ´Â ÁÖü°¡ È£Ãâ¿øÀÌ ¾Æ´Ï¶ó ÇÔ¼ö¶ó´Â Á¡ÀÌ ´Ù¸£´Ù. Add ÇÔ¼öÀÇ È£Ãâ ±Ô¾àÀ» ¹Ù²Ù±â À§ÇØ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇØ º¸ÀÚ.

 

int __stdcall Add(int a, int b)

{

     int c,d,e;

     c=a+b;

     return c;

}

 

ÇÔ¼ö À̸§¾Õ¿¡ __stdcall Å°¿öµå¸¦ »ðÀÔÇϸé ÀÌ ÇÔ¼ö´Â __stdcall È£Ãâ ±Ô¾àÀ» »ç¿ëÇÑ´Ù. main¿¡¼­ ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ºÎºÐÀÌ ´ÙÀ½°ú °°ÀÌ º¯°æµÈ´Ù.

 

push 2

push 1

call Add

result=eax

 

Àμö¸¦ ½ºÅÿ¡ ¹Ð¾î ³Ö´Â °Í°ú Àμö¸¦ Ǫ½ÃÇÏ´Â ¼ø¼­´Â µ¿ÀÏÇÏ´Ù. ´Ü, call Add ´ÙÀ½¿¡ add esp,8 Äڵ尡 ¾ø¾î ÇÔ¼ö°¡ ¸®ÅÏµÈ ÈÄ¿¡ Àμö Àü´Þ¿¡ »ç¿ëÇÑ ½ºÅÃÀ» º¹±¸ÇÏÁö ¾Ê´Â´Ù´Â Á¡ÀÌ __cdecl°ú ´Ù¸£´Ù. Àμö Àü´Þ¿¡ »ç¿ëÇÑ ¿µ¿ªÀº ÀÌÁ¦ Add ÇÔ¼ö°¡ Á÷Á¢ Á¤¸®ÇÑ´Ù. ÀÌ ÇÔ¼öÀÇ Á¢µÎ, º»Ã¼´Â __cdecl°ú µ¿ÀÏÇϸç Á¢¹Ì ºÎºÐÀÌ ´ÙÀ½°ú °°ÀÌ º¯°æµÈ´Ù.

 

push ebp

....

ret 8

 

º¹±Í Äڵ尡 ret¿¡¼­ ret 8·Î ¹Ù²î¾úÀ¸¸ç º¹±ÍÇϸ鼭 esp¸¦ 8¸¸Å­ Áõ°¡½ÃŲ´Ù. ÀÌ Äڵ忡 ÀÇÇØ ÇÔ¼ö´Â ½ÇÇàÀ» ¸¶Ä¡°í º¹±ÍÇÔ°ú µ¿½Ã¿¡ Àμö ¿µ¿ªÀ» ÇØÁ¦ÇÑ´Ù. Add ÇÔ¼ö ÀÚ½ÅÀÌ º¹±ÍÇϸ鼭 ½ºÅÃÀ» Á¤¸®ÇϹǷΠȣÃâ¿ø¿¡¼­´Â ½ºÅÃÀ» Á¤¸®ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. È£Ãâ¿øÀº Àμö¸¦ ¼ø¼­´ë·Î ½ºÅÿ¡ Ǫ½ÃÇÑ ÈÄ ÇÔ¼ö¸¸ È£ÃâÇÏ¸é µÈ´Ù.

__cdecl°úÀÇ Â÷ÀÌÁ¡

__cdecl°ú __stdcallÀÇ °¡Àå Å« Â÷ÀÌÁ¡Àº ½ºÅà Á¤¸® ÁÖü°¡ ´©±¸Àΰ¡ÇÏ´Â Á¡Àε¥ »ç½Ç ÀÌ Â÷ÀÌÁ¡ÀÌ ÄÄÆÄÀÏµÈ °á°ú Äڵ忡 ¹ÌÄ¡´Â ¿µÇâÀº º°·Î ¾ø´Ù. ½ºÅà Á¤¸® ÁÖü¿Í´Â »ó°ü¾øÀÌ ½ºÅÃÀº Ç×»ó È£Ãâ ÀüÀÇ »óÅ·Πº¹±¸µÇ¸ç ÇÁ·Î±×·¥ÀÇ µ¿ÀÛµµ ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù. ½ÇÇà ¼Óµµ´Â °ÅÀÇ Â÷ÀÌ°¡ ¾øÀ¸¸ç ÇÁ·Î±×·¥ÀÇ Å©±â´Â ºñ·Ï ¹«½ÃÇÒ¸¸ÇÑ ¼öÁØÀ̱â´Â ÇÏÁö¸¸ __stdcallÀÌ Á¶±Ý ´õ ÀÛ´Ù. ¿Ö³ÄÇϸé ÇÔ¼ö¸¦ ¿©·¯ ¹ø È£ÃâÇÏ´õ¶óµµ ½ºÅÃÀ» Á¤¸®ÇÏ´Â ÄÚµå´Â ÇÔ¼ö ³¡ÀÇ Á¢¹Ì¿¡ µü ÇÑ ¹ø¸¸ ÀÛ¼ºµÇ±â ¶§¹®ÀÌ´Ù. ¹Ý¸é __cdeclÀº È£Ãâ¿øÀÌ ½ºÅÃÀ» Á¤¸®ÇϹǷΠȣÃâÇÒ ¶§¸¶´Ù Á¤¸® Äڵ尡 ¹Ýº¹µÇ¾î ÇÁ·Î±×·¥ Å©±â°¡ Á¶±Ý ´õ Ä¿Áø´Ù.

¶Ç ´Ù¸¥ Áß¿äÇÑ Â÷ÀÌÁ¡Àº °¡º¯ Àμö ÇÔ¼ö¸¦ ¸¸µé ¼ö Àִ°¡ ¾Æ´Ñ°¡ ÇÏ´Â Á¡ÀÌ´Ù. __stdcallÀº ÇÔ¼ö°¡ Á÷Á¢ ½ºÅÃÀ» Á¤¸®Çϱ⠶§¹®¿¡ °¡º¯ Àμö ÇÔ¼ö¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù. ÇÔ¼ö Á¢¹Ì¿¡ ½ºÅà Á¤¸® Äڵ带 ÀÛ¼ºÇÏ·Á¸é ÀμöÀÇ ÃÑ Å©±â¸¦ ¹Ì¸® ¾Ë¾Æ¾ß Çϴµ¥ °¡º¯ Àμö ÇÔ¼ö´Â Àü´ÞµÇ´Â Àμö °³¼ö°¡ °¡º¯À̹ǷΠÀÌ Å©±â°¡ °íÁ¤ÀûÀÌÁö ¾Ê¾Æ Á¢¹Ì¿¡¼­ ½ºÅÃÀ» Á÷Á¢ Á¤¸®ÇÒ ¼ö ¾ø´Ù. ÄÄÆÄÀÏ·¯°¡ Á¢¹ÌÀÇ ret n ¸í·É¿¡ ´ëÇØ nÀ» °áÁ¤ÇÒ ¼ö ¾ø´Â °ÍÀÌ´Ù.

ÀÌ¿¡ ºñÇØ __cdeclÀº ÇÔ¼ö°¡ ½ºÅÃÀ» Á¤¸®ÇÒ Ã¥ÀÓÀÌ ¾øÀ¸¸ç È£Ãâ¿øÀÌ ÇÔ¼ö¸¦ ºÎ¸¦ ¶§¸¶´Ù ½ºÅÃÀ» Á¤¸®ÇÑ´Ù. ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ÂÊ¿¡¼­´Â Àμö¸¦ ¸î°³³ª Àü´ÞÇß´ÂÁö ¾Ë ¼ö ÀÖÀ¸¹Ç·Î ½ÇÁ¦ Àü´ÞÇÑ Àμö Å©±â¸¸Å­ ½ºÅÃÀ» Á¤¸®ÇÒ ¼ö ÀÖ´Ù. ±×·¡¼­ printf³ª scanf°°Àº °¡º¯ Àμö¸¦ Áö¿øÇÏ´Â ÇÔ¼ö´Â ¸ðµÎ __cdecl È£Ãâ ±Ô¾àÀ» »ç¿ëÇÑ´Ù. ¶ÇÇÑ À©µµ¿ìÁî API ÇÔ¼öÀÇ ±âº» È£Ãâ ±Ô¾àÀº __stdcallÀÌÁö¸¸ wsprintf´Â ¿¹¿ÜÀûÀ¸·Î __cdecl·Î ÀÛ¼ºµÇ¾î ÀÖ´Ù.

È£Ãâ ±Ô¾à Áß È£Ãâ¿øÀÌ ½ºÅÃÀ» Á¤¸®ÇÏ´Â °ÍÀº __cdecl¹Û¿¡ ¾øÀ¸¸ç ±×·¡¼­ °¡º¯ Àμö¸¦ Áö¿øÇÒ ¼ö Àִ ȣÃ⠱Ծ൵ __cdeclÀÌ À¯ÀÏÇÏ´Ù. °¡º¯ Àμö ÇÔ¼ö¸¦ ¸¸µé·Á¸é ¹Ýµå½Ã __cdecl È£Ãâ ±Ô¾àÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. ¸¸¾à °¡º¯ Àμö ÇÔ¼ö¸¦ __stdcall·Î ÀÛ¼ºÇϸé ÄÄÆÄÀÏ·¯´Â À̸¦ ¹«½ÃÇÏ°í __cdecl·Î °­Á¦·Î ¹Ù²Ù¾î ¹ö¸°´Ù.

__fastcall

´ÙÀ½Àº __fastcall È£Ãâ ±Ô¾àÀ» Å×½ºÆ®ÇØ º¸ÀÚ. ÇÔ¼ö Á¤ÀǺθ¦ int __fastcall Add(int a, int b)·Î ¼öÁ¤Çϱ⸸ ÇÏ¸é µÈ´Ù. È£ÃâºÎÀÇ ÄÚµå´Â ´ÙÀ½°ú °°´Ù.

 

mov edx,2

mov ecx,1

call Add

result=eax

 

__fastcallÀº Àμö Àü´ÞÀ» À§ÇØ edx, ecx ·¹Áö½ºÅ͸¦ »ç¿ëÇϴµ¥ µÎ °³ÀÇ Àμö¸¦ Â÷·Ê´ë·Î edx, ecx¿¡ ´ëÀÔÇß´Ù. ¸¸¾à Àμö°¡ µÑ ÀÌ»óÀÌ¸é ¼¼ ¹ø° ÀÌÈÄÀÇ Àμö´Â __cdecl°ú ¸¶Âù°¡Áö·Î ½ºÅÿ¡ ¹Ð¾î³ÖÀ» °ÍÀÌ´Ù. Àμö Àü´ÞÀ» À§ÇØ ½ºÅÃÀ» ¾²Áö ¾Ê°í ·¹Áö½ºÅ͸¦ ¿ì¼±ÀûÀ¸·Î »ç¿ëÇϹǷΠÀμö Àü´Þ ¼Óµµ°¡ ºü¸£´Ù´Â ÀÌÁ¡ÀÌ ÀÖ´Ù. ÇÔ¼öÀÇ ÄÚµå´Â ´ÙÀ½Ã³·³ ÀÛ¼ºµÈ´Ù.

 

push ebp

mov ebp,esp

sub esp,14h

mov [ebp-8],edx             // ù ¹ø° Àμö¸¦ Áö¿ªº¯¼ö·Î

mov [ebp-4],ecx             // µÎ ¹ø° Àμö¸¦ Áö¿ªº¯¼ö·Î

mov eax,[ebp-4]

add eax,[ebp-8]

mov [ebp-0ch],eax               // c´Â ¼¼ ¹ø° Áö¿ªº¯¼ö°¡ µÈ´Ù.

mov eax,[ebp-0ch]

mov esp,ebp

pop ebp

ret

 

edx, ecx ·¹Áö½ºÅ͸¦ ÅëÇØ Àü´Þ¹ÞÀº Àμö µÑÀ» ¼ø¼­´ë·Î Áö¿ªº¯¼ö ¿µ¿ª¿¡ º¹»çÇÑ ÈÄ »ç¿ëÇϴµ¥ ¾îÂ÷ÇÇ Àμöµµ Áö¿ªº¯¼öÀÇ ÀÏÁ¾À̹ǷΠÀÌ·¸°Ô Çصµ º° »ó°üÀÌ ¾ø´Ù. VC´Â fastcall È£Ãâ½Ã ecx, edx·Î Àμö¸¦ ³Ñ±â±â´Â ÇÏÁö¸¸ À̸¦ ´Ù½Ã ½ºÅÃÀÇ Áö¿ªº¯¼ö·Î ¸¸µå´Âµ¥ ÀÌ·¸°Ô µÇ¸é fastcallÀ» ÇÏ´Â Àǹ̰¡ ¾ø´Ù. ºñÁÖ¾ó C++Àº fastcallÀ» Çü½ÄÀûÀ¸·Î¸¸ Áö¿øÇÒ »Ó fastcallÀÇ ÀåÁ¡À» ÃëÇÏÁö´Â ¾Ê´Âµ¥ ÀÌ´Â ÄÄÆÄÀÏ·¯ ±¸Çö»ó ecx, edx ·¹Áö½ºÅÍ°¡ ²À ÇÊ¿äÇϱ⠶§¹®ÀÌ´Ù. 

½ºÅà Á¤¸®´Â ÇÔ¼ö°¡ Çϴµ¥ Add ÇÔ¼öÀÇ °æ¿ì Àμö°¡ µÎ °³ »ÓÀ̹ǷΠÀμö Àü´ÞÀ» À§ÇØ ½ºÅÃÀ» »ç¿ëÇÏÁö ¾Ê¾ÒÀ¸¸ç ±×·¡¼­ Á¤¸®ÇÒ ³»¿ëÀÌ ¾ø´Ù. ¸¸¾à Àμö°¡ ¼¼ °³¶ó¸é Á¦ÀÏ ³¡ÀÇ ret´Â ret 4°¡ µÉ °ÍÀÌ´Ù. ·¹Áö½ºÅÍ´Â ½ºÅú¸´Ù ÈξÀ ´õ ºü¸£°Ô µ¿ÀÛÇϱ⠶§¹®¿¡ __fastcallÀº À̸§´ë·Î È£Ãâ ¼Óµµ°¡ ºü¸£´Ù. ´ë½Å À̽ļº¿¡ ºÒ¸®ÇÏ´Ù´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ÀÌ È£Ãâ ±Ô¾àÀº ecx, edx ·¹Áö½ºÅ͸¦ »ç¿ëÇϵµ·Ï µÇ¾î Àִµ¥ ÀÌ µÎ ·¹Áö½ºÅÍ°¡ ¸ðµç CPU¿¡ °øÅëÀûÀ¸·Î Á¸ÀçÇÏ´Â °ÍÀÌ ¾Æ´Ï±â ¶§¹®ÀÌ´Ù. ±×·¡¼­ À©µµ¿ìÁî API´Â ÀÌ È£Ãâ ±Ô¾àÀ» Áö¿øÇϱâ´Â ÇÏÁö¸¸ »ç¿ëÇÏÁö´Â ¾Ê´Â´Ù. º¼·£µåÀÇ µ¨ÆÄÀÌ°¡ __fastcallÀ» »ç¿ëÇÑ´Ù.

thiscall

thiscallÀº Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼ö¿¡ ´ëÇؼ­¸¸ Àû¿ëµÇ´Âµ¥ ecx·Î °´Ã¼ÀÇ Æ÷ÀÎÅÍ(this)°¡ Àü´ÞµÈ´Ù´Â °ÍÀÌ Æ¯Â¡ÀÌ¸ç ³ª¸ÓÁö ±ÔÄ¢Àº __stdcall°ú µ¿ÀÏÇÏ´Ù. ¿¹¿ÜÀûÀ¸·Î °¡º¯ Àμö¸¦ »ç¿ëÇÏ´Â ¸â¹ö ÇÔ¼ö´Â __cdecl·Î ÀÛ¼ºµÇ¸ç À̶§ this´Â ½ºÅÃÀÇ Á¦ÀÏ ¸¶Áö¸·¿¡(±×·¯¹Ç·Î ù ¹ø° Àμö·Î) Àü´ÞµÈ´Ù.

ÀÌ È£Ãâ ±Ô¾àÀº ÄÄÆÄÀÏ·¯°¡ ¸â¹ö ÇÔ¼ö¿¡ ´ëÇؼ­¸¸ Ưº°È÷ Àû¿ëÇÏ´Â °ÍÀ̹ǷΠÀÏ¹Ý ÇÔ¼ö¿¡´Â ÀÌ È£Ãâ ±Ô¾àÀ» Àû¿ëÇÒ ¼ö ¾ø´Ù. thiscallÀº ÀÌ È£Ãâ ±Ô¾àÀÇ À̸§ÀÏ »Ó Å°¿öµå°¡ ¾Æ´Ï±â ¶§¹®¿¡ ÇÔ¼ö ¿øÇü¿¡ thiscallÀ̶ó°í ¾µ ¼öµµ ¾ø´Ù. ¸â¹ö ÇÔ¼öÀ̱⸸ Çϸé ÄÄÆÄÀÏ·¯°¡ ¾Ë¾Æ¼­ thiscall È£Ãâ ±Ô¾àÀ» Àû¿ëÇÑ´Ù. °´Ã¼´Ï ¸â¹ö ÇÔ¼ö´Ï this´Ï ÇÏ´Â °ÍµéÀº C++Æí¿¡¼­ ¹è¿ì°Ô µÉ °ÍÀÌ´Ù.

__naked

__naked È£Ãâ ±Ô¾àÀº ÄÄÆÄÀÏ·¯°¡ Á¢µÎ, Á¢¹Ì¸¦ ÀÛ¼ºÇÏÁö ¾Ê´Â È£Ãâ ±Ô¾àÀÌ´Ù. ½ºÅà ÇÁ·¹ÀÓÀÇ »óÅ º¸Á¸À» À§ÇØ ÄÄÆÄÀÏ·¯°¡ ¾î¶² Äڵ嵵 ÀÛ¼ºÇÏÁö ¾ÊÀ¸¹Ç·Î Á¢µÎ, Á¢¹Ì´Â »ç¿ëÀÚ°¡ Á÷Á¢ ÀÛ¼ºÇØ¾ß ÇÑ´Ù. ½ºÅÃÀº ¾î¼Àºí¸® ¼öÁØ¿¡¼­¸¸ ´Ù·ê ¼ö ÀÖÀ¸¹Ç·Î ÀζóÀÎ ¾î¼Àºí¸®¸¦ »ç¿ëÇØ¾ß Çϸç Á¦¾àÁ¡µµ ¸¹±â ¶§¹®¿¡ ÀϹÝÀûÀÎ ¸ñÀûÀ¸·Î´Â »ç¿ëµÇÁö ¾Ê´Â´Ù.

ÀÌ È£Ãâ ±Ô¾àÀÌ ¹Ýµå½Ã ÇÊ¿äÇÑ °æ¿ì´Â C/C++ÀÌ ¾Æ´Ñ ¾ð¾î¿¡¼­ È£ÃâÇÏ´Â ÇÔ¼ö¸¦ ÀÛ¼ºÇÒ ¶§ÀÌ´Ù. ¿¹¸¦ µé¾î ¾î¼Àºí¸®¿¡¼­´Â Àμö Àü´Þ¿¡ ½ºÅÃÀ» ¾²Áö ¾Ê°í ¹ü¿ë ·¹Áö½ºÅ͸¸À¸·Îµµ Àμö¸¦ Àü´ÞÇÒ ¼ö ÀÖ´Ù. ÀÌ·± °æ¿ì´Â CÄÄÆÄÀÏ·¯°¡ ¸¸µé¾îÁÖ´Â Á¢µÎ, Á¢¹Ì°¡ ºÒÇÊ¿äÇÏ´Ù. ¶ÇÇÑ ¼Óµµ°¡ Áö±ØÈ÷ Áß¿äÇÑ µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ÀÛ¼ºÇÒ ¶§µµ ÀÌ È£Ãâ ±Ô¾àÀ» »ç¿ëÇÑ´Ù. __naked È£Ãâ ±Ô¾àÀ» »ç¿ëÇÏ·Á¸é ÇÔ¼öÀÇ Á¤ÀǺο¡ __declspec(naked)¸¦ Àû¾îÁÖ¸é µÈ´Ù.

¿©±â¼­ ¾Ë¾Æº» È£Ãâ ±Ô¾à ¿Ü¿¡µµ __pascal, __fortran, __syscall À̶ó´Â È£Ãâ ±Ô¾àÀÌ ÀÖ¾úÀ¸³ª Áö±ÝÀº Áö¿øµÇÁö ¾Ê´Â´Ù. ºñÁÖ¾ó C++Àº °ú°Å¿ÍÀÇ È£È¯¼ºÀ» À§ÇØ ÀÌ ´Ü¾îµéÀ» Å°¿öµå·Î ÀÎÁ¤Çϱâ´Â ÇÏÁö¸¸ ½ÇÁ¦·Î »ç¿ëÇÒ °æ¿ì ¿¡·¯·Î ó¸®ÇÑ´Ù. ÀÌ»óÀ¸·Î ´Ù¼¸ °¡ÁöÀÇ È£Ã⠱Ծ࿡ ´ëÇØ Á¤¸®Çߴµ¥ ½ÇÁ¦·Î »ç¿ëµÇ°í »ç¿ëÀÚ°¡ ÁöÁ¤ÇÒ ¼ö Àִ ȣÃâ ±Ô¾àÀº Çö½ÇÀûÀ¸·Î __cdecl, __stdcall µÎ °¡Áö¹Û¿¡ ¾ø´Â ¼ÀÀÌ´Ù.