¾Õ Ç׿¡¼ Add ÇÔ¼öÀÇ ¾î¼Àºí¸® Äڵ带 ÅëÇØ ½ºÅà ÇÁ·¹ÀÓÀÇ ½ÇÁ¦ ¸ð¾çÀ» È®ÀÎÇØ º¸¾Ò´Ù. Àμö´Â µÚÂʺÎÅÍ ¼ø¼´ë·Î Àü´ÞÇϸç Àμö Àü´Þ¿¡ »ç¿ëÇÑ ½ºÅà ¿µ¿ªÀº È£Ãâ¿øÀÌ Á¤¸®Çߴµ¥ ÀÌ´Â C/C++ ¾ð¾îÀÇ ±âº» È£Ãâ ±Ô¾àÀÎ __cdeclÀÇ ½ºÅà ÇÁ·¹ÀÓ ¸ð¾çÀÏ »ÓÀÌ´Ù. È£Ãâ ±Ô¾àÀÌ ¹Ù²î¸é ½ºÅà ÇÁ·¹ÀÓÀÇ ¸ð¾ç°ú °ü¸® ¹æ¹ýµµ ´Þ¶óÁú ¼ö ÀÖ´Ù.
È£Ãâ ±Ô¾àÀº È£Ãâ¿ø°ú ÇÔ¼ö°£ÀÇ ¾à¼ÓÀ̹ǷΠ¾çÂÊÀÌ ´Ù¸¥ ÇüÅ·Π¾à¼ÓÀ» ÇÒ ¼öµµ ÀÖ´Â °ÍÀÌ´Ù. ±×·¸´Ù¸é __cdeclÀÌ ¾Æ´Ñ ´Ù¸¥ È£Ãâ ±Ô¾àÀº ¾î¶»°Ô ½ºÅà ÇÁ·¹ÀÓÀ» ÀÛ¼ºÇÏ´ÂÁö Â÷ÀÌÁ¡À» ºÐ¼®ÇØ º¸ÀÚ. È£Ã⠱Ծ࿡ µû¶ó Àμö¸¦ Àü´ÞÇÏ´Â ¹æ¹ý°ú ½ºÅÃÀÇ Á¤¸® Ã¥ÀÓ, ÇÔ¼öÀÇ À̸§À» ÀÛ¼ºÇÏ´Â ¹æ¹ýÀÌ ´Þ¶óÁø´Ù.
È£Ãâ ±Ô¾à |
Àμö Àü´Þ |
½ºÅà Á¤¸® |
À̸§ ±ÔÄ¢ |
__cdecl |
¿À¸¥ÂÊ ¸ÕÀú |
È£Ãâ¿ø |
_ÇÔ¼ö¸í |
__stdcall |
¿À¸¥ÂÊ ¸ÕÀú |
ÇÔ¼ö |
_ÇÔ¼ö¸í@ÀμöÅ©±â |
__fastcall |
ECX, EDX¿¡ ¿ì¼± Àü´Þ. ³ª¸ÓÁö´Â ¿À¸¥ÂÊ ¸ÕÀú |
ÇÔ¼ö |
@ÇÔ¼ö¸í@ÀμöÅ©±â |
thiscall |
¿À¸¥ÂÊ ¸ÕÀú, this Æ÷ÀÎÅÍ´Â ecx ·¹Áö½ºÅÍ·Î Àü´ÞµÈ´Ù. |
ÇÔ¼ö |
C++ À̸§ ±ÔÄ¢À» µû¸§. |
naked |
¿À¸¥ÂÊ ¸ÕÀú |
ÇÔ¼ö |
¾øÀ½ |
¸®ÅÏ°ªÀ» µ¹·Á ÁÖ´Â ¹æ½Äµµ È£Ã⠱Ծ࿡ µû¶ó ´Þ¶óÁú ¼ö Àִµ¥ ´ÙÇàÈ÷ ÇöÁ¸ÇÏ´Â ¸ðµç È£Ãâ ±Ô¾àÀÇ ¸®ÅÏ ¹æ½ÄÀº µ¿ÀÏÇÏ´Ù. 4¹ÙÀÌÆ®ÀÇ °ªÀ» µ¹·ÁÁÙ ¶§´Â eax ·¹Áö½ºÅ͸¦ »ç¿ëÇϸç 8¹ÙÀÌÆ®ÀÇ °ªÀ» ¸®ÅÏÇÒ ¶§´Â edx:eax ·¹Áö½ºÅÍ ½ÖÀ» »ç¿ëÇÑ´Ù. 8¹ÙÀÌÆ®¸¦ ÃÊ°úÇÏ´Â Å« ¸®ÅÏ°ª, ¿¹¸¦ µé¾î ±¸Á¶Ã¼ µîÀº Àӽà ¿µ¿ª¿¡ ¸®ÅÏÇÒ °ªÀ» ³Ö¾î µÎ°í ±× Æ÷ÀÎÅ͸¦ eax¿¡ ¸®ÅÏÇÑ´Ù.
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°ú __stdcallÀÇ °¡Àå Å« Â÷ÀÌÁ¡Àº ½ºÅà Á¤¸® ÁÖü°¡ ´©±¸Àΰ¡ÇÏ´Â Á¡Àε¥ »ç½Ç ÀÌ Â÷ÀÌÁ¡ÀÌ ÄÄÆÄÀÏµÈ °á°ú Äڵ忡 ¹ÌÄ¡´Â ¿µÇâÀº º°·Î ¾ø´Ù. ½ºÅà Á¤¸® ÁÖü¿Í´Â »ó°ü¾øÀÌ ½ºÅÃÀº Ç×»ó È£Ãâ ÀüÀÇ »óÅ·Πº¹±¸µÇ¸ç ÇÁ·Î±×·¥ÀÇ µ¿ÀÛµµ ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù. ½ÇÇà ¼Óµµ´Â °ÅÀÇ Â÷ÀÌ°¡ ¾øÀ¸¸ç ÇÁ·Î±×·¥ÀÇ Å©±â´Â ºñ·Ï ¹«½ÃÇÒ¸¸ÇÑ ¼öÁØÀ̱â´Â ÇÏÁö¸¸ __stdcallÀÌ Á¶±Ý ´õ ÀÛ´Ù. ¿Ö³ÄÇϸé ÇÔ¼ö¸¦ ¿©·¯ ¹ø È£ÃâÇÏ´õ¶óµµ ½ºÅÃÀ» Á¤¸®ÇÏ´Â ÄÚµå´Â ÇÔ¼ö ³¡ÀÇ Á¢¹Ì¿¡ µü ÇÑ ¹ø¸¸ ÀÛ¼ºµÇ±â ¶§¹®ÀÌ´Ù. ¹Ý¸é __cdeclÀº È£Ãâ¿øÀÌ ½ºÅÃÀ» Á¤¸®ÇϹǷΠȣÃâÇÒ ¶§¸¶´Ù Á¤¸® Äڵ尡 ¹Ýº¹µÇ¾î ÇÁ·Î±×·¥ Å©±â°¡ Á¶±Ý ´õ Ä¿Áø´Ù.
¶Ç ´Ù¸¥ Áß¿äÇÑ Â÷ÀÌÁ¡Àº °¡º¯ Àμö ÇÔ¼ö¸¦ ¸¸µé ¼ö Àִ°¡ ¾Æ´Ñ°¡ ÇÏ´Â Á¡ÀÌ´Ù. __stdcallÀº ÇÔ¼ö°¡ Á÷Á¢ ½ºÅÃÀ» Á¤¸®Çϱ⠶§¹®¿¡ °¡º¯ Àμö ÇÔ¼ö¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù. ÇÔ¼ö Á¢¹Ì¿¡ ½ºÅà Á¤¸® Äڵ带 ÀÛ¼ºÇÏ·Á¸é ÀμöÀÇ ÃÑ Å©±â¸¦ ¹Ì¸® ¾Ë¾Æ¾ß Çϴµ¥ °¡º¯ Àμö ÇÔ¼ö´Â Àü´ÞµÇ´Â Àμö °³¼ö°¡ °¡º¯À̹ǷΠÀÌ Å©±â°¡ °íÁ¤ÀûÀÌÁö ¾Ê¾Æ Á¢¹Ì¿¡¼ ½ºÅÃÀ» Á÷Á¢ Á¤¸®ÇÒ ¼ö ¾ø´Ù. ÄÄÆÄÀÏ·¯°¡ Á¢¹ÌÀÇ ret n ¸í·É¿¡ ´ëÇØ nÀ» °áÁ¤ÇÒ ¼ö ¾ø´Â °ÍÀÌ´Ù.
ÀÌ¿¡ ºñÇØ __cdeclÀº ÇÔ¼ö°¡ ½ºÅÃÀ» Á¤¸®ÇÒ Ã¥ÀÓÀÌ ¾øÀ¸¸ç È£Ãâ¿øÀÌ ÇÔ¼ö¸¦ ºÎ¸¦ ¶§¸¶´Ù ½ºÅÃÀ» Á¤¸®ÇÑ´Ù. ÇÔ¼ö¸¦ È£ÃâÇÏ´Â ÂÊ¿¡¼´Â Àμö¸¦ ¸î°³³ª Àü´ÞÇß´ÂÁö ¾Ë ¼ö ÀÖÀ¸¹Ç·Î ½ÇÁ¦ Àü´ÞÇÑ Àμö Å©±â¸¸Å ½ºÅÃÀ» Á¤¸®ÇÒ ¼ö ÀÖ´Ù. ±×·¡¼ printf³ª scanf°°Àº °¡º¯ Àμö¸¦ Áö¿øÇÏ´Â ÇÔ¼ö´Â ¸ðµÎ __cdecl È£Ãâ ±Ô¾àÀ» »ç¿ëÇÑ´Ù. ¶ÇÇÑ À©µµ¿ìÁî API ÇÔ¼öÀÇ ±âº» È£Ãâ ±Ô¾àÀº __stdcallÀÌÁö¸¸ wsprintf´Â ¿¹¿ÜÀûÀ¸·Î __cdecl·Î ÀÛ¼ºµÇ¾î ÀÖ´Ù.
È£Ãâ ±Ô¾à Áß È£Ãâ¿øÀÌ ½ºÅÃÀ» Á¤¸®ÇÏ´Â °ÍÀº __cdecl¹Û¿¡ ¾øÀ¸¸ç ±×·¡¼ °¡º¯ Àμö¸¦ Áö¿øÇÒ ¼ö Àִ ȣÃ⠱Ծ൵ __cdeclÀÌ À¯ÀÏÇÏ´Ù. °¡º¯ Àμö ÇÔ¼ö¸¦ ¸¸µé·Á¸é ¹Ýµå½Ã __cdecl È£Ãâ ±Ô¾àÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. ¸¸¾à °¡º¯ Àμö ÇÔ¼ö¸¦ __stdcall·Î ÀÛ¼ºÇϸé ÄÄÆÄÀÏ·¯´Â À̸¦ ¹«½ÃÇÏ°í __cdecl·Î °Á¦·Î ¹Ù²Ù¾î ¹ö¸°´Ù.
´ÙÀ½Àº __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Àº Ŭ·¡½ºÀÇ ¸â¹ö ÇÔ¼ö¿¡ ´ëÇؼ¸¸ Àû¿ëµÇ´Âµ¥ ecx·Î °´Ã¼ÀÇ Æ÷ÀÎÅÍ(this)°¡ Àü´ÞµÈ´Ù´Â °ÍÀÌ Æ¯Â¡ÀÌ¸ç ³ª¸ÓÁö ±ÔÄ¢Àº __stdcall°ú µ¿ÀÏÇÏ´Ù. ¿¹¿ÜÀûÀ¸·Î °¡º¯ Àμö¸¦ »ç¿ëÇÏ´Â ¸â¹ö ÇÔ¼ö´Â __cdecl·Î ÀÛ¼ºµÇ¸ç À̶§ this´Â ½ºÅÃÀÇ Á¦ÀÏ ¸¶Áö¸·¿¡(±×·¯¹Ç·Î ù ¹ø° Àμö·Î) Àü´ÞµÈ´Ù.
ÀÌ È£Ãâ ±Ô¾àÀº ÄÄÆÄÀÏ·¯°¡ ¸â¹ö ÇÔ¼ö¿¡ ´ëÇؼ¸¸ Ưº°È÷ Àû¿ëÇÏ´Â °ÍÀ̹ǷΠÀÏ¹Ý ÇÔ¼ö¿¡´Â ÀÌ È£Ãâ ±Ô¾àÀ» Àû¿ëÇÒ ¼ö ¾ø´Ù. thiscallÀº ÀÌ È£Ãâ ±Ô¾àÀÇ À̸§ÀÏ »Ó Å°¿öµå°¡ ¾Æ´Ï±â ¶§¹®¿¡ ÇÔ¼ö ¿øÇü¿¡ thiscallÀ̶ó°í ¾µ ¼öµµ ¾ø´Ù. ¸â¹ö ÇÔ¼öÀ̱⸸ Çϸé ÄÄÆÄÀÏ·¯°¡ ¾Ë¾Æ¼ thiscall È£Ãâ ±Ô¾àÀ» Àû¿ëÇÑ´Ù. °´Ã¼´Ï ¸â¹ö ÇÔ¼ö´Ï this´Ï ÇÏ´Â °ÍµéÀº C++Æí¿¡¼ ¹è¿ì°Ô µÉ °ÍÀÌ´Ù.
__naked È£Ãâ ±Ô¾àÀº ÄÄÆÄÀÏ·¯°¡ Á¢µÎ, Á¢¹Ì¸¦ ÀÛ¼ºÇÏÁö ¾Ê´Â È£Ãâ ±Ô¾àÀÌ´Ù. ½ºÅà ÇÁ·¹ÀÓÀÇ »óÅ º¸Á¸À» À§ÇØ ÄÄÆÄÀÏ·¯°¡ ¾î¶² Äڵ嵵 ÀÛ¼ºÇÏÁö ¾ÊÀ¸¹Ç·Î Á¢µÎ, Á¢¹Ì´Â »ç¿ëÀÚ°¡ Á÷Á¢ ÀÛ¼ºÇØ¾ß ÇÑ´Ù. ½ºÅÃÀº ¾î¼Àºí¸® ¼öÁØ¿¡¼¸¸ ´Ù·ê ¼ö ÀÖÀ¸¹Ç·Î ÀζóÀÎ ¾î¼Àºí¸®¸¦ »ç¿ëÇØ¾ß Çϸç Á¦¾àÁ¡µµ ¸¹±â ¶§¹®¿¡ ÀϹÝÀûÀÎ ¸ñÀûÀ¸·Î´Â »ç¿ëµÇÁö ¾Ê´Â´Ù.
ÀÌ È£Ãâ ±Ô¾àÀÌ ¹Ýµå½Ã ÇÊ¿äÇÑ °æ¿ì´Â C/C++ÀÌ ¾Æ´Ñ ¾ð¾î¿¡¼ È£ÃâÇÏ´Â ÇÔ¼ö¸¦ ÀÛ¼ºÇÒ ¶§ÀÌ´Ù. ¿¹¸¦ µé¾î ¾î¼Àºí¸®¿¡¼´Â Àμö Àü´Þ¿¡ ½ºÅÃÀ» ¾²Áö ¾Ê°í ¹ü¿ë ·¹Áö½ºÅ͸¸À¸·Îµµ Àμö¸¦ Àü´ÞÇÒ ¼ö ÀÖ´Ù. ÀÌ·± °æ¿ì´Â CÄÄÆÄÀÏ·¯°¡ ¸¸µé¾îÁÖ´Â Á¢µÎ, Á¢¹Ì°¡ ºÒÇÊ¿äÇÏ´Ù. ¶ÇÇÑ ¼Óµµ°¡ Áö±ØÈ÷ Áß¿äÇÑ µð¹ÙÀ̽º µå¶óÀ̹ö¸¦ ÀÛ¼ºÇÒ ¶§µµ ÀÌ È£Ãâ ±Ô¾àÀ» »ç¿ëÇÑ´Ù. __naked È£Ãâ ±Ô¾àÀ» »ç¿ëÇÏ·Á¸é ÇÔ¼öÀÇ Á¤ÀǺο¡ __declspec(naked)¸¦ Àû¾îÁÖ¸é µÈ´Ù.
¿©±â¼ ¾Ë¾Æº» È£Ãâ ±Ô¾à ¿Ü¿¡µµ __pascal, __fortran, __syscall À̶ó´Â È£Ãâ ±Ô¾àÀÌ ÀÖ¾úÀ¸³ª Áö±ÝÀº Áö¿øµÇÁö ¾Ê´Â´Ù. ºñÁÖ¾ó C++Àº °ú°Å¿ÍÀÇ È£È¯¼ºÀ» À§ÇØ ÀÌ ´Ü¾îµéÀ» Å°¿öµå·Î ÀÎÁ¤Çϱâ´Â ÇÏÁö¸¸ ½ÇÁ¦·Î »ç¿ëÇÒ °æ¿ì ¿¡·¯·Î ó¸®ÇÑ´Ù. ÀÌ»óÀ¸·Î ´Ù¼¸ °¡ÁöÀÇ È£Ã⠱Ծ࿡ ´ëÇØ Á¤¸®Çߴµ¥ ½ÇÁ¦·Î »ç¿ëµÇ°í »ç¿ëÀÚ°¡ ÁöÁ¤ÇÒ ¼ö Àִ ȣÃâ ±Ô¾àÀº Çö½ÇÀûÀ¸·Î __cdecl, __stdcall µÎ °¡Áö¹Û¿¡ ¾ø´Â ¼ÀÀÌ´Ù.