´ä±Û ´Þ±â


¿øº» ´ñ±Û ÇÔ¼ö È£Ãâ °ü·Ã ±ÔÄ¢À» È£Ãâ ±Ô¾à(Calling Convention)À̶ó°í ÇÕ´Ï´Ù. °ü·Ã ³»¿ëÀº ¾î¼Àºí¸® ¼öÁرîÁö ¸Þ¸ð¸®¸¦ µé¿©´Ù ºÁ¾ß Çؼ­ Á» ¾î·Æ½À´Ï´Ù¸¸ ÀÌ »çÀÌÆ® C/C++ °­ÁÂÀÇ 16-1Àý¿¡ ÀÚ¼¼ÇÏ°Ô ¼³¸íµÇ¾î ÀÖÀ¸´Ï ´ÙÀ½¿¡ Â÷±ÙÈ÷ ÀÐ¾î º¸½Ê½Ã¿À.
ÇÔ¼öÀÇ È£Ãâ ±â·ÏÀº ½ºÅà ÇÁ·¹ÀÓÀ̶ó´Â °÷ÀÌ Â÷°î Â÷°î ÀúÀåµË´Ï´Ù. ¿¹¸¦ µå½Å Äڵ忡¼­ a ÇÔ¼ö¿¡ Àμö¿Í Áö¿ª º¯¼ö°¡ ¾ø´Âµ¥ ¼³¸íÀÇ ÆíÀÇ»ó a°¡ int c¸¦ Àμö·Î ¹Þ°í int d Áö¿ª º¯¼ö¸¦ ¼±¾ðÇß´Ù°í ÇսôÙ. ÀÌ·± ¸ð½ÀÀÌ°ÚÁÒ.

int a(int c)
{
 int d;
 count << "ÇÔ¼ö È£ÃâÀÔ´Ï´Ù";
}

mainÀÌ Ã³À½ È£ÃâµÇ¸é ½ºÅà ÇÁ·¹ÀÓ¿¡´Â Áö¿ª º¯¼ö b¸¸ »ý¼ºµÇ¾î ÀÖ½À´Ï´Ù.

mainÀÇ Áö¿ª º¯¼ö b

ÀÌ »óÅ¿¡¼­ mainÀº Áö¿ª º¯¼ö b¸¦ ÀÚÀ¯·Ó°Ô ¾×¼¼½ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ »óÅ¿¡¼­ a ÇÔ¼ö¸¦ È£ÃâÇϸé mainÀÇ ½ºÅà ÇÁ·¹ÀÓÀº ±×´ë·Î À¯ÁöÇÑ Ã¤·Î ±× À§¿¡ a ÇÔ¼öÀÇ ½ºÅà ÇÁ·¹ÀÓÀÌ »ý¼ºµË´Ï´Ù. ¸ÕÀú Àμö°¡ µé¾î°¡°í À̾ mainÀ¸·ÎÀÇ º¹±Í ¹øÁö, mainÀÇ ±âÁØ ¹øÁö, ±×¸®°í ÀÚ½ÅÀÇ Áö¿ª º¯¼ö ¿µ¿ªÀÌ »ý¼ºµË´Ï´Ù.

aÀÇ Áö¿ª º¯¼ö d
mainÀÇ ±âÁØ ¹øÁö(ebp)
mainÀ¸·Î º¹±ÍÇÒ ¹øÁö
a·Î Àü´ÞÇÒ Àμö c
mainÀÇ Áö¿ª º¯¼ö b

ÀÌ »óÅ¿¡¼­ a ÇÔ¼ö´Â ÀÚ½ÅÀÇ Àμö¿Í Áö¿ª º¯¼ö¸¦ ÀÚÀ¯·Ó°Ô ¾×¼¼½ºÇÕ´Ï´Ù. mainÀÇ Áö¿ª º¯¼ö b´Â a¿¡¼­ ÀÐÀ» ¼ö ¾øÀ¸¸ç ±× °ªÀ» ±×´ë·Î À¯Áö¸¸ ÇÕ´Ï´Ù. ¸¸¾à  a°¡ ¶Ç ´Ù¸¥ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù¸é ±× À§¿¡ ½ºÅà ÇÁ·¹ÀÓÀÌ ¶Ç »ý¼ºµË´Ï´Ù. ÀÌ·± ½ÄÀ¸·Î ½ºÅà ¿µ¿ªÀ» ´Ù ¾µ ¶§±îÁö ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖ¾î È£Ãâ Ƚ¼öÀÇ Á¦¾àÀº °ÅÀÇ ¾ø½À´Ï´Ù.
a°¡ ½ÇÇàÀ» ¸¶Ä¡°í mainÀ¸·Î º¹±ÍÇϸé Áö¿ª¿Í Àμö´Â ¸ðµÎ Á¤¸®µÇ°í º¹±Í ¹øÁö¸¦ ã¾Æ ¸®ÅÏÇϸç mainÀÇ ±âÁØ ¹øÁö¸¦ º¹±¸ÇØ ÁÝ´Ï´Ù. ±×·¯¸é ½ºÅà ÇÁ·¹ÀÓÀº ´ÙÀ½°ú °°ÀÌ µÇ°ÚÁÒ.

mainÀÇ Áö¿ª º¯¼ö b

a¸¦ È£ÃâÇϱâ ÀüÀÇ »óÅ ±×´ë·Î µ¹¾Æ°©´Ï´Ù. À̶§ aÀÇ ¸ðµç Áö¿ª º¯¼ö´Â »ç¶óÁö°í ¾ø½À´Ï´Ù. ±×·¡¼­ Áö¿ª º¯¼ö´Â ÇÔ¼ö ³»ºÎ¿¡¼­¸¸ À¯È¿Çϸç ÇÔ¼ö È£ÃâÀÌ ³¡³ª¸é °°ÀÌ »ç¶óÁö´Â °ÍÀÔ´Ï´Ù. mainÀÇ Áö¿ª º¯¼ö b´Â ±×´ë·Î ³²¾Æ ÀÖÀ¸¸ç mainÀº ÀÌ º¯¼ö¸¦ °è¼Ó »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
main¿¡¼­ Dog(int v) { int n, m; ....} À» È£ÃâÇÏ°í Dog¿¡¼­ Add(int a, int b) { int c, d, e; ....)À» È£ÃâÇÏ¸é ½ºÅà ÇÁ·¹ÀÓÀº ´ÙÀ½°ú °°ÀÌ º¯ÇÕ´Ï´Ù. È£ÃâÀ» ¸¶Ä¡°í µ¹¾Æ¿À¸é ¿ø·¡´ë·Î ±ôÂÊ°°ÀÌ º¹±¸µÇ°í¿ä.



ÀÌ·± ½ÄÀ¸·Î µ¿ÀÛÇϴ ȣÃâ ±Ô¾àÀ» _cdeclÀ̶ó°í Çϸç C¾ð¾îÀÇ ±âº» È£Ãâ ±Ô¾àÀÔ´Ï´Ù. Áï º°´Ù¸¥ ÁöÁ¤ÀÌ ¾øÀ¸¸é ÇÔ¼ö´Â À§¿Í °°Àº ÀýÂ÷´ë·Î È£Ãâ ¹× Á¤¸®µË´Ï´Ù. ±× ¿Ü¿¡µµ ´Ù¸¥ ¹æ½ÄÀ¸·Î µ¿ÀÛÇϴ ȣÃâ ±Ô¾àÀÌ ¸¹ÀÌ Àִµ¥ Àμö¸¦ Àü´ÞÇÏ´Â ¼ø¼­, ½ºÅÃÀ» Á¤¸®ÇÒ ÁÖü, ÇÔ¼ö¿¡ À̸§À» ºÙÀÌ´Â ¹æ¹ýÀÌ °¢°¢ ´Ù¸¨´Ï´Ù.
ÇÔ¼ö¸¦ ´Ü¼øÈ÷ Á¤ÀÇÇÏ°í »ç¿ë¸¸ ÇÏ°Ú´Ù¸é ±»ÀÌ ¸ô¶óµµ µÇ´Â ³»¿ëÀÌ´Ï´Ù. ±×·¯³ª °¡º¯ Àμö °°Àº °í±Þ ±â¹ýÀ» ¾´´Ù°Å³ª ´Ù¸¥ È£Ãâ ±Ô¾àÀ» »ç¿ëÇÏ´Â ¾ð¾î¿Í ¸µÅ©ÇÏ·Á¸é ÀÌ·± ³»¿ëµµ ¾Ë¾Æ¾ß ÇÕ´Ï´Ù.

ÀÌ ´ñ±Û¿¡ ´ëÇÑ ´ä±ÛÀ» ÀÛ¼ºÇϽʽÿÀ.