[ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): rockers () ³¯ Â¥ (Date): 2001³â 4¿ù 19ÀÏ ¸ñ¿äÀÏ ¿ÀÈÄ 07½Ã 39ºÐ 52ÃÊ Á¦ ¸ñ(Title): ÇÁ·Î±×·¥ÀÌ È£ÃâµÉ¶§ ½ºÅÃÀÇ ¸ð¾ç ¾È³çÇϼ¼¿ä. C¾ð¾î¿¡¼­ ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ stackÀ» »ç¿ëÇϴµ¥ È£ÃâÇßÀ» ¶§ÀÇ Á¤È®ÇÑ ¸ð½ÀÀÌ ¾î¶»°Ô µÇ³ª¿ä? Á» Á¤È®ÇÏ°Ô ¾Ë°í ½ÍÀºµ¥.. command line argumentÇÏ°í envrionment ÇÏ°í stack¿¡ ¾î¶»°Ô ½×ÀÌ´ÂÁö ¾Ë°í½Í¾î¼­¿ä. Âü°íÇÒ ¸¸ÇÑ ÀÚ·á ¾ø³ª¿ä? °í¼ö´Ôµé²² ºÎŹ µå¸³´Ï´Ù. [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): terzeron (the cowboy) ³¯ Â¥ (Date): 2001³â 4¿ù 20ÀÏ ±Ý¿äÀÏ ¿ÀÀü 10½Ã 00ºÐ 42ÃÊ Á¦ ¸ñ(Title): Re: ÇÁ·Î±×·¥ÀÌ È£ÃâµÉ¶§ ½ºÅÃÀÇ ¸ð¾ç À¢¸¸ÇÑ Programming Language Ã¥¿¡´Â ³ª¿Ã ¸¸ÇÑ ³»¿ëÀÔ´Ï´Ù. °Ë»ö ¿£Áø¿¡¼­ memory layoutÀ̳ª function call·Î °Ë»öÇØ º¸½Ã¸é ±×¸²°ú ÇÔ²² ÀÚ¼¼ÇÑ ¼³¸íÀ» º¸½Ç ¼öµµ ÀÖ±¸¿ä. ´ëüÀûÀ¸·Î ÇϳªÀÇ C/C++ ÇÁ·Î±×·¥ÀÌ Â÷ÁöÇÏ´Â memory layoutÀº Å©°Ô 3°³ÀÇ ¿µ¿ªÀ¸·Î ±¸ºÐµË´Ï´Ù. low address ¿µ¿ªÀº programÀÌ Â÷ÁöÇÏ°í ÀÖ°í, high address ¿µ¿ªÀº stackÀ» À§ÇÑ ¿µ¿ªÀ¸·Î »ç¿ëµË´Ï´Ù. ÀÌ Áß°£¿¡ ÀÖ´Â ¿µ¿ªÀº global, static data¸¦ ÀúÀåÇϴµ¥ »ç¿ëµË´Ï´Ù. compile/link-time¿¡ °íÁ¤µÇ´Â °ªÀº ¸ðµÎ Áß°£ ¿µ¿ª¿¡ À§Ä¡ÇÏ°í run-time¿¡ °áÁ¤µÇ´Â °ªÀº ¸ðµÎ stack¿¡ ÀúÀåµË´Ï´Ù. ÇÑ ¹øÀÇ function callÀÌ ÀÖÀ» ¶§¸¶´Ù stackÀ» ±¸¼ºÇÏ´Â frameÀÌ ¸¸µé¾îÁö°í, ÀÌ stack frame(activation record)Àº parameterµé°ú »óŸ¦ ÀúÀåÇϱâ À§ÇÑ Ä«¿îÅͳª ·¹Áö½ºÅÍ°¡ À§Ä¡ÇÏ°Ô µË´Ï´Ù. ±×¸®°í Áö¿ª º¯¼ö, Àӽà º¯¼ö, ¸®ÅÏ ¾îµå·¹½º·Î ±¸¼ºµË´Ï´Ù. ÀÌ ¼ø¼­´Â bottom-upÀ¸·Î µÇ¾î ÀÖ½À´Ï´Ù. local variableÀÌ ½ÃÀÛÇÏ´Â À§Ä¡´Â frame pointer°¡ °¡¸®Å°°Ô µÇ¾î ÀÖÁÒ. ¾ÆÅ°ÅØÃijª ÄÄÆÄÀÏ·¯¸¶´Ù ¾à°£¾¿ÀÇ Â÷ÀÌ°¡ Àֱ⠶§¹®¿¡ È®½ÇÇÑ °ÍÀº µð¹ö°Å¸¦ ÀÌ¿ëÇؼ­ ½ºÅÃÀ» È®ÀÎÇÏ´Â °ÍÀÌ È®½ÇÇÏ°Ú½À´Ï´Ù.