½ÇÇà½Ã ½ºÅÃ(stack)
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

Contents

1 25Àå ½ÇÇà½Ã ½ºÅÃ
1.1 ½ºÅÃ(Stack)
1.2 À§¿¡¼­ºÎÅÍ ¾Æ·¡·Î Áõ°¡ÇÏ´Â MIPS ½ºÅÃ
1.3 Áý¾î³Ö±â (Ǫ½Ã, Push)
1.4 ¿¹Á¦
1.5 ¿¹Á¦ °è¼Ó
1.6 ¿Ï¼ºµÈ ÇÁ·Î±×·¥
1.7 ½ÇÇà½Ã ½ºÅà (·±Å¸ÀÓ ½ºÅÃ, Runtime Stack)


1 25Àå ½ÇÇà½Ã ½ºÅÃ

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-25/ass25_1.html

ÀÌ Àå¿¡¼­´Â ½ÇÇà½Ã ½ºÅðú ½ºÅÃÆ÷ÀÎÅÍ ·¹Áö½ºÅÍ $sp¿¡ ´ëÇØ¼­ ³íÀÇÇÑ´Ù.

ÀåÀÇ ÁÖÁ¦

  • ½ºÅÃ(Stacks)
  • ½ºÅà Æ÷ÀÎÅÍ ·¹Áö½ºÅÍ ($sp)
  • ½ºÅà Áý¾î³Ö±â(Ǫ½Ã, Push) »©³»±â(ÆË, Pop) ÀÛµ¿.
  • MIPSÀÇ ½ÇÇà ½ºÅÃ.
  • ÄÄÆÄÀÏ·¯´Â ½ºÅÃÀ» ¾î¶»°Ô »ç¿ëÇϴ°¡..
  • ¹®ÀÚ¿­ µÚÁý±â ¿¹Á¦

¹ø¿ª: ÀÚ¹ÙÇϴ³Ñ, °­¿õºó
°¨¼ö: ???

ÁÖ:ÀÌ Àå¿¡¼­ ¿¹Á¦ ÇÁ·Î±×·¥Àº ½ºÇË ½Ã¹Ä·¹ÀÌÅÍÀÇ ¼³Á¤¿¡¼­ ÀÇ»ç¸í·É(pseduoinstrictions)Àº ON Áö¿¬ºÐ±â(delayed branches)´Â OFF ±×¸®°í Áö¿¬ ·Îµù(delayed loading)ÀÌ OFF ¼³Á¤ÀÓÀ» °¡Á¤ÇÑ´Ù.

Áú¹®:
½×¿©ÀÖ´Â Á¢½Ãµé·ÎºÎÅÍ ÇϳªÀÇ Á¢½Ã¸¦ »Ì¾Æ³½´Ù°í °¡Á¤Çغ¸ÀÚ. ¾î¶² Á¢½Ã¸¦ ÀϹÝÀûÀ¸·Î ¸ÕÀú »Ì¾Æ³»°Ú½À´Ï±î?

1.1 ½ºÅÃ(Stack)

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-25/ass25_2.html

´ä:¸ÇÀ§¿¡ ÀÖ´Â Á¢½Ã

½ºÅÃÀ̶õ ¸Þ¸ð¸®¿¡ µ¥ÀÌÅ͸¦ Á¤·ÄÇÏ´Â ÇϳªÀÇ ¹æ½ÄÀÌ´Ù. Ãß»óÀûÀÎ µ¥ÀÌÅ͵éÀ» ¸¶Ä¡ ¹°¸®ÀûÀÎ ¹°Ã¼°¡ ÀÛµ¿Çϴ°Íó·³ °¡½ÃÈ­ÇÒ ¼ö ÀÖ´Ù. ½ºÅÃÀ» Á¢½ÃµéÀ» ½×¾Æ³õÀº ±¸Á¶°¡ ÀÛµ¿Çϴ°Íó·³ °¡½ÃÈ­ÇØ¼­ »ý°¢ÇØ º¼ ¼ö ÀÖ´Ù. Á¢½ÃµéÀ» ½×¾Æ³õÀº ½ºÅÿ¡¼­ Á¢½Ã¸¦ ¾ò°Å³ª »©°Å³ª ÇÏ´Â ÀÛµ¿¹æ½Ä°ú À¯»çÇÏ°Ô µ¥ÀÌÅ͸¦ ´õÇϰųª »©³¾ ¼ö ÀÖ´Ù.

ÀϹÝÀûÀ¸·Î Á¢½Ã¸¦ ½×¾Æ³õÀº ½ºÅÿ¡¼­ ¸ðµç ÀÛµ¿Àº ¸ÇÀ§¿¡ Á¢½Ã¸¦ °¡Áö°í ÇÑ´Ù. Á¢½Ã°¡ ÇÊ¿äÇÏ´Ù¸é ½×¾Æ³õÀº Á¢½Ã¿¡ °¡Àå À­Á¢½Ã¸¦ »©³½´Ù. Á¢½Ã¸¦ ½×À» ¶§´Â ¸ÇÀ§ÀÇ Á¢½ÃÀ§¿¡ Á¢½Ã¸¦ ¿Ã·Á ³õ´Â´Ù.

Áú¹®: Á¢½Ã¸¦ ½Ö¾Æ³õÀº ½ºÅÿ¡ °¡Àå ¸¶Áö¸·¿¡ ¿Ã·ÁÁø Á¢½Ã´Â ¹«¾úÀԴϱî? Á¢½Ã¸¦ ½ºÅÿ¡¼­ »©³¾¶§ ù¹øÂ°·Î »Ì¾Æ³»´Â Á¢½Ã´Â ¹«¾úÀԴϱî?

1.2 À§¿¡¼­ºÎÅÍ ¾Æ·¡·Î Áõ°¡ÇÏ´Â MIPS ½ºÅÃ

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-25/ass25_3.html

´ä:

½×¾Æ³í Á¢½ÃÀ§¿¡ °¡Àå À§¿¡ ÀÖ´Â Á¢½Ã°¡ Á¦ÀÏ ¸¶Áö¸·¿¡ ¾ðÇôÁø Á¢½ÃÀ̰í Á¦ÀϸÕÀú »Ì¾Æ³¾ ¼ö ÀÖ´Â Á¢½ÃÀÌ´Ù.

stackInts00.gif

Á¢½Ã¸¦ ½Ö¾Æ³õÀº ½ºÅÃó·³ ÀÛµ¿Çϴ°ÍÀ» ¿µ¾î·Î LIFO(last in first out)·Î Ç¥ÇöÇÑ´Ù. ±»ÀÌ ¹ø¿ªÇÏÀÚ¸é ¸¶Áö¸·¿¡ µé¾î°£°ÍÀÌ Ã¹¹øÂ°·Î ³ª¿À´Â ÀÛµ¿ Á¤µµ·Î ¹ø¿ªÇÒ ¼ö ÀÖ´Ù.
±×¸²¿¡¼­ º¼ ¼ö ÀÖ´Â ½ºÅÃÀÇ µ¥ÀÌÅ͵éÀÌ °¢°¢ 32ºñÆ® Å©±âÀÌ´Ù. ÀϹÝÀûÀ¸·Î ½ºÅÃÀº ¸ðµç ÇüÅÂÀÇ µ¥ÀÌÅÍ¿¡ Àû¿ëÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ÀÌ Àå¿¡¼­ ½ºÅÃÀº 32ºñÆ® MIPS FULL WORD¸¦ ´ã°í ÀÖ´Ù.

±×¸²Àº full word¸¦ ´ã°í ÀÖ´Â MIPS ½ºÅÃÀ» º¸¿©ÁØ´Ù. °ü·Ê¿¡ µû¶ó ½ºÅà Æ÷ÀÎÅÍ ·¹Áö½ºÅÍ $sp´Â ½ºÅÃÀÇ °¡Àå ÃÖ»óÀ§ ¾ÆÀÌÅÛÀ» °¡¸®Å²´Ù. ½ºÅØ Æ÷ÀÎÅÍ´Â ·¹Áö½ºÅÍ $29ÀÌ´Ù. È®ÀåµÈ ¾î¼Àºí·¯¿¡¼­´Â ·¹Áö½ºÅÍ ¾à¾î·Î $sp¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

ÀϹÝÀûÀ¸·Î ¸Þ¸ð¸®¸¦ ±×¸±¶§ ½ºÅÃÀº À§¿¡¼­ºÎÅÍ ¾Æ·¡·Î Áõ°¡ÇÏ´Â ÇüÅÂÀÌ´Ù. ±×¸²¿¡¼­ ½ºÅÃÀÇ ÃÖ»óÀ§ ¾ÆÀÌÅÛÀº 81ÀÌ°í ½ºÅÃÀÇ ÃÖÇÏÀ§ ¾ÆÀÌÅÛÀº Á¤¼ö -92¸¦ ´ã°í ÀÖ´Ù.

¿î¿ªÃ¼Á¦´Â ÇÁ·Î±×·¥À» ½ÃÀÛÇϱâ Àü¿¡ ½ºÅÃÀÇ ¸Þ¸ð¸® ¿µ¿ªÀ» º¸ÀåÇØ ÁÖ°í ÀûÀýÇÑ ÁÖ¼Ò¸¦ $sp ·¹Áö½ºÅÍ¿¡ Áý¾î³Ö´Â´Ù.

Áú¹®:
¸¸¾à¿¡ ½ºÅÿ¡ 103À̶ó´Â ¼ýÀÚ¸¦ Ãß°¡µÉ¶§ ±× Ãß°¡µÇ´Â µ¥ÀÌÅÍ(103)Àº ¾îµð¿¡ À§Ä¡ÇÏ°Ô µË´Ï±î?

1.3 Áý¾î³Ö±â (Ǫ½Ã, Push)

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-25/ass25_4.html

´ä:

81 ´ÙÀ½¿¡ ÀÖ½À´Ï´Ù. 103Àº ÀÌÁ¦ ½ºÅÃÀÇ ¸Ç À§ÀÔ´Ï´Ù.

¼ÒÇÁÆ®¿þ¾î °ü½À (convention) ¿¡ µû¶ó, $sp´Â Ç×»ó ½ºÅÃÀÇ ¸Ç À§¸¦ °¡¸®Åµ´Ï´Ù. ¶ÇÇÑ °°Àº ÀÌÀ¯·Î ½ºÅÃÀº (¸Þ¸ð¸® ÁÖ¼Ò¸¦ °í·ÁÇÒ¶§) ¾Æ·¡·Î ÀÚ¶ø´Ï´Ù. ±×·¡¼­ ¿ì¸®ÀÇ 4¹ÙÀÌÆ® (Ç® ¿öµå-full word) µ¥ÀÌÅÍÀÇ ½ºÅÿ¡¼­ µ¥ÀÌÅ͸¦ Ãß°¡ÇÑ´Ù´Â °ÍÀº $sp¿¡¼­ 4¸¦ »©°í ±× ÁÖ¼Ò¿¡ ±× ¾ÆÀÌÅÛÀ» ÀúÀåÇÑ´Ù´Â °Í°ú °°Àº ¸»ÀÔ´Ï´Ù. ÀÌ µ¿ÀÛÀ» Áý¾î³Ö±â(Ǫ½Ã, push) ¶ó°í ÇÕ´Ï´Ù.

¾ÆÀÌÅÛÀ» ½ºÅÿ¡ Áý¾î³ÖÀ¸·Á¸é ¸ÕÀú ½ºÅÃÆ÷ÀÎÅÍ¿¡¼­ 4À» »«ÈÄ¿¡ ±× ¾ÆÀÌÅÛÀ» ½ºÅÃÀÌ °¡¸®Å°´Â ÁÖ¼Ò¿¡ Áý¾î³Ö½À´Ï´Ù.
¾Æ·¡¿¡ ¿¹Á¦Äڵ尡 ÀÖ½À´Ï´Ù. ·¹Áö½ºÅÍ $t0¿¡ ÀÖ´Â °ªÀ» ½ºÅÿ¡ Ǫ½Ã ÇÑ´Ù°í ÇϰڽÀ´Ï´Ù.

# $t0 ¿¡ ÀÖ´Â ¾ÆÀÌÅÛ¸¦ 'Ǫ½Ã' Çϱâ: 
subu $sp,$sp,4      #   »õ·Î¿î ¾ÆÀÌÅÛÀ» ³ÖÀ» À§Ä¡¸¦ ÁöÁ¤ÇÑ´Ù. i.e. ½ºÅÃÆ÷ÀÎÅÍ¿¡¼­ 4¹ÙÀÌÆ®¸¦ »«´Ù. 
sw   $t0,($sp)      #  $t0¿¡ ÀÖ´Â ¾ÆÀÌÅÛÀ» »õ·Î¿î ½ºÅÃÀÇ ¸Ç À­ ÁöÁ¡(top) ¿¡ ÀúÀåÇÑ´Ù. 
 

stackInts01.gif

Áú¹®:
À§ÀÇ ±×¸²¿¡ ÀÖ´Â ½ºÅÿ¡¼­ ÇѰ³ÀÇ ¾ÆÀÌÅÛ Á¦°ÅÇÑ´Ù¸é ¾î¶² µ¥ÀÌÅͰ¡ Á¦°ÅµË´Ï±î?

==== »©³»±â (ÆË, Pop) ====
http://chortle.ccsu.edu/AssemblyTutorial/Chapter-25/ass25_5.html

´ä: 103ÀÌ Á¦°ÅµË´Ï´Ù.

½ºÅÿ¡¼­ ¾ÆÀÌÅÛÀ» Á¦°ÅÇÏ´Â µ¿ÀÛÀ» »©³»±â(ÆË, Pop) À̶ó°í ÇÕ´Ï´Ù.
½ÇÁ¦ ¿¹ (Á¢½Ã¸¦ Á¦°ÅÇÏ´Â µ¿ÀÛ) ¿¡¼­´Â Á¢½Ã¸¦ ½ÇÁ¦·Î »©³ÂÁö¸¸, ¼ÒÇÁÆ®¿þ¾î ½ºÅÿ¡¼­ÀÇ Á¦°Å´Â ¿ø·¡ÀÇ ¾ÆÀÌÅÛÀÌ ¿Å°ÜÁö°í ½ºÅÃÆ÷ÀÎÅͰ¡ Á¶Á¤-Áõ°¡- ÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù.

stackInts02.gif

À§ÀÇ »çÁøÀº ÆË µ¿ÀÛÀ» º¸¿©ÁÝ´Ï´Ù. µ¥ÀÌÅÍ´Â ¸ÕÀú ½ºÅÃÀÇ ¸Ç À§¿¡¼­ ´Ù¸¥ °÷À» º¹»çµÇ°í ½ºÅà Æ÷ÀÎÅͰ¡ Áõ°¡µÇ¾ú½À´Ï´Ù.

½ºÅÿ¡¼­ ¾ÆÀÌÅÛÀ» »©³»·Á¸é ½ºÅÃÆ÷ÀÎÅͰ¡ °¡¸®Å°´Â ¾ÆÀÌÅÛÀ» º¹»çÇÏ°í ½ºÅÃÆ÷ÀÎÅÍ¿¡ 4¸¦ ´õÇÏ¸é µË´Ï´Ù.
½ÇÁ¦ ÄÚµå´Â ¾Æ·¡¿Í °°½À´Ï´Ù. ½ºÅÿ¡¼­ ÇÑ ¾ÆÀÌÅÛÀ» $t0 À¸·Î »©³»´Â ¿¹ÀÔ´Ï´Ù.

# ½ºÅÿ¡¼­ ¾ÆÀÌÅÛÀ» '»©³»' $t0¿¡ Áý¾î³Ö±â: 
lw   $t0,($sp)      #   ¸ÇÀ§ÀÇ ¾ÆÀÌÅÛÀ» $t0¿¡ º¹»ç. 
addu $sp,$sp,4      #   ¸ÇÀ§ÀÇ ¾ÆÀÌÅÛ ¹Ù·Î ¾Æ·¡ ¾ÆÀÌÅÛÀ» °¡¸®Å°µµ·Ï $sp¸¦ Á¶Á¤ 
 

Áú¹®:
¼ÒÇÁÆ®¿þ¾î ½ºÅÿ¡¼­ ¾ÆÀÌÅÛÀ» »©³½ÈÄ, »©³½ ¾ÆÀÌÅÛÀÌ ¸Þ¸ð¸®¿¡ ³²¾ÆÀÖ½À´Ï±î?

1.4 ¿¹Á¦

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-25/ass25_6.html

´ä: ³×. µ¥ÀÌÅͰ¡ »õ·Î¿î Àå¼Ò¿¡ º¹»çµÇ¾ú´Ù°í ÇØµµ ÀÌÀü Àå¼Ò¿¡´Â µ¥ÀÌÅͰ¡ ³²¾ÆÀÖ½À´Ï´Ù. ÇÏÁö¸¸ ½ºÅÃÆ÷ÀÎÅͰ¡ ¿Å°ÜÁ³±â ¶§¹®¿¡ ³í¸®ÀûÀ¸·Î´Â µ¥ÀÌÅͰ¡ ½ºÅÿ¡ ³²¾ÆÀÖÁö ¾Ê½À´Ï´Ù.

º¸Åë ½ºÅÃÀº ¸ðµç ·¹Áö½ºÅ͵éÀÌ ÀÌ¹Ì »ç¿ëÁßÀ϶§ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¸é ÄÄÆÄÀÏ·¯°¡ ¼ö½ÄÀ» ±â°è¾î·Î ¹øÈ¯ÇÒ¶§ ÄÄÆÄÀÏ·¯´Â ½ºÅÃÀ» »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ¼ö½ÄÀÌ ab - 12a + 18b - 7À̶ó°í ÇսôÙ. »ç¿ë°¡´ÉÇÑ ·¹Áö½ºÅÍ´Â $t0°ú $t1»ÓÀÔ´Ï´Ù.

½ºÅÃÆ÷ÀÎÅÍ´Â SPIMÀÌ ÇÁ·Î±×·¥ÀÌ ½ÃÀÛÇϱâ Àü¿¡ ÀûÀýÈ÷ ÃʱâÈ­ µË´Ï´Ù. ¿î¿µÃ¼Á¦¸¦ °¡Áö°í ÀÖ´Â ½Ã½ºÅÛ¿¡¼­´Â ¿î¿µÃ¼Á¦°¡ ÇÁ·Î±×·¥ÀÌ ½ÃÀÛÇϱâ Àü¿¡ ½ºÅÃÆ÷ÀÎÅ͸¦ ÃʱâÈ­ ÇÕ´Ï´Ù.

ÇÁ·Î±×·¥ÀÇ ½ÃÀÛÀÔ´Ï´Ù.

# ¼ö½Ä ab - 12a + 18b - 7 À» Æò°¡Çϱâ 
 
main:    
        lw      $t0,a          # a¸¦ °¡Á®¿À±â 
        lw      $t1,bb         # b¸¦ °¡Á®¿À±â 
        mul     $t0,$t0,$t1    # a*b 
         
        subu    $sp,$sp,_____  # a*b¸¦ ½ºÅÿ¡ Áý¾î³Ö±â 
         
        sw      $t0,______ 
 
        . . . . . 
 
        .data 
a:      2 
bb:     3 
 

Áú¹®:
ºóÄ­À» ä¿ö º¸½Ê½Ã¿À.

1.5 ¿¹Á¦ °è¼Ó

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-25/ass25_7.html

´ä:
¾Æ·¡ÀÇ Äڵ带 º¸¼¼¿ä.

½ÄÀÇ °¢ Ç×ÀÌ Æò°¡µÇ¸é¼­ ½ºÅÿ¡ Áý¾î ³Ö¾îÁý´Ï´Ù. ±×¸®°í³ª¼­ ÇÕ (¿ì¸®°¡ ¿øÇÏ´Â ´ä)Àº -7·Î ÃʱâÈ­µÇ°í °¢°¢ÀÇ Ç×Àº ½ºÅÿ¡¼­ ³ª¿À¸é¼­ ÇÕ¿¡ Ãß°¡µË´Ï´Ù.

# ¼ö½Ä ab - 12a + 18b - 7 Æò°¡Çϱâ 
 
        .globl  main 
        lw      $t0,a          # a¸¦ °¡Á®¿À±â 
        lw      $t1,bb         # b¸¦ °¡Á®¿À±â 
        mul     $t0,$t0,$t1    # a*b 
        subu    $sp,$sp,4      # a*b¸¦ ½ºÅÿ¡ Áý¾î³Ö±â 
        sw      $t0,($sp) 
         
        lw      $t0,a          # a¸¦ °¡Á®¿À±â 
        li      $t1,-12        #  
        mul     $t0,$t0,$t1    # -12a 
        subu    $sp,$sp,4      # -12a ¸¦ ½ºÅÿ¡ Áý¾î³Ö±â 
        sw      $t0,($sp) 
         
        lw      $t0,bb         # b¸¦ °¡Á®¿À±â 
        li      $t1,18         #  
        mul     $t0,$t0,$t1    # 18b 
        subu    $sp,$sp,4      # 18b ¸¦ ½ºÅÿ¡ Áý¾î³Ö±â 
        sw      $t0,($sp) 
 
        li      $t1,-7         # ÇÕÀ» -7·Î ÃʱâÈ­ 
         
        lw      $t0,_____      # 18b¸¦ ½ºÅÿ¡¼­ »©³»±â 
         
        addu    $sp,$sp,______ 
         
        addu    $t1,$t1,$t0    # 18b -7 
 
        . . . . 
 

Áú¹®:
¾ÆÀÌÅÛ '18b'¸¦ »Ì±âÀ§ÇÑ Äڵ带 Áý¾î³ÖÀ¸¼¼¿ä.

1.6 ¿Ï¼ºµÈ ÇÁ·Î±×·¥

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-25/ass25_8.html

´ä:
¾Æ·¡ÀÇ Äڵ带 Âü°íÇϼ¼¿ä.

¾Æ·¡¿¡ ¿Ï¼ºµÈ ÇÁ·Î±×·¥ÀÌ ÀÖ½À´Ï´Ù. ¸¸¾à ÃæºÐÇÑ ¼öÀÇ ·¹Áö½ºÅ͸¦ ¾µ¼ö ÀÖ¾ú´Ù¸é ¼ö½ÄÀÇ Ç×À» ½ºÅÃÀÌ ¾Æ´Ñ ·¹Áö½ºÅÍ¿¡ ÀúÀåÇßÀ» °Í ÀÔ´Ï´Ù.
±×·¯³ª Å« ÇÁ·Î±×·¥¿¡¼­ ¸¹Àº ·¹Áö½ºÅͰ¡ ÀÌ¹Ì »ç¿ëÁß À϶§´Â ÀÌ·±½ÄÀ¸·Î ÇØ¾ßÇÒ ¶§µµ ÀÖ½À´Ï´Ù.

# ¼ö½Ä ab - 12a + 18b - 7À» Æò°¡ÇÏ´Â ÇÁ·Î±×·¥ 
# 
# ¼³Á¤: Áö¿¬·Îµù (delayed load) OFF; Áö¿¬ºÐ±â (Branch delays) OFF, 
#           Æ®·¦ÆÄÀÏ (Trap file)   ON; ÀÇ»ç¸í·É (Pseudoinstructions) ON    
 
        .globl  main 
 
main:    
        lw      $t0,a          # a ±¸Çϱâ 
        lw      $t1,bb         # b ±¸Çϱâ 
        mul     $t0,$t0,$t1    # a*b 
        subu    $sp,$sp,4      # a*b ¸¦ ½ºÅÿ¡ Áý¾î³Ö±â 
        sw      $t0,($sp) 
         
        lw      $t0,a          # a ±¸Çϱâ 
        li      $t1,-12        #  
        mul     $t0,$t0,$t1    # -12a 
        subu    $sp,$sp,4      # -12a ¸¦ ½ºÅÿ¡ Áý¾î³Ö±â 
        sw      $t0,($sp) 
         
        lw      $t0,bb         # b ±¸Çϱâ 
        li      $t1,18         #  
        mul     $t0,$t0,$t1    # 18b 
        subu    $sp,$sp,4      # 18b ¸¦ ½ºÅÿ¡ Áý¾î³Ö±â 
        sw      $t0,($sp) 
 
        li      $t1,-7         # ÇÕÀ» -7·Î ÃʱâÈ­ 
        lw      $t0,($sp)      # 18b ¸¦ ½ºÅÿ¡¼­ »©³»±â 
        addu    $sp,$sp,4 
        addu    $t1,$t1,$t0    # 18b -7 
                 
        lw      $t0,($sp)      # -12a ¸¦ ½ºÅÿ¡¼­ »©³»±â 
        addu    $sp,$sp,4 
        addu    $t1,$t1,$t0    # -12a + 18b -7 
                 
        lw      $t0,($sp)      # ab ¸¦ ½ºÅÿ¡¼­ »©³»±â 
        addu    $sp,$sp,4 
        addu    $t1,$t1,$t0    # ab - 12a + 18b -7 
          
done:   li      $v0,1          # ÇÕ Ãâ·Â 
        move    $a0,$t1 
        syscall 
        li      $v0,10         # ³¡ 
        syscall    
 
        .data 
a:      .word  0 
bb:     .word  10 
 

Áú¹®: (»ý°¢À» ¿äÇÏ´Â ¹®Á¦)
½ºÅÿ¡ ³Ê¹« ¸¹Àº °ÍµéÀ» Áý¾î³ÖÀ¸¸é ¸Þ¸ð¸®°¡ °¡µæ Âû±î¿ä?

1.7 ½ÇÇà½Ã ½ºÅà (·±Å¸ÀÓ ½ºÅÃ, Runtime Stack)

http://chortle.ccsu.edu/AssemblyTutorial/Chapter-25/ass25_9.html

´ä: ³×

¾Æ¹«¸® ÁÁÀº ÄÄÇ»ÅÍ ½Ã½ºÅÛÀ̶ó ÇÒÁö¶óµµ ¸Þ¸ð¸®ÀÇ ¾çÀº ¹«ÇÑÇÕ´Ï´Ù. ±×·¡¼­ ¸Þ¸ð¸®¿¡ Á¸ÀçÇÏ´Â ¿öµåÀÇ ¼öº¸´Ù ¸¹Àº ¿öµå¸¦ Áý¾î³Ö´Â°ÍÀÌ °¡´ÉÇÕ´Ï´Ù. ÇÁ·Î±×·¥ÀÌ Ã³À½ ½ÇÇàµÉ¶§ ¿î¿µÃ¼Á¦°¡ ²Ï Å« ½ºÅÃÀ» Áֱ⠶§¹®¿¡, ±×·±ÀÏÀº º¸Åë ¹«ÇÑ·çÇÁ¶§¹®¿¡ ÀϾ´Ï´Ù.

memoryLayout.gif

À§ÀÇ »çÁøÀº ÀϹÝÀûÀÎ ¿î¿µÃ¼Á¦°¡ ¾î¶»°Ô ¸Þ¸ð¸®¸¦ °ü¸®ÇÏ´ÂÁö º¸¿©ÁÝ´Ï´Ù. ÃÖ°í 4±â°¡ ¹ÙÀÌÆ®ÀÇ (°¡»ó) ¸Þ¸ð¸®°¡ Á¸ÀçÇÕ´Ï´Ù. (ÁÖ: ¸Þ¸ð¸® ÁÖ¼Ò°¡ 32ºñÆ® Å©±â¶ó°í °¡Á¤ÇÒ ¶§¿¡; 64ºñÆ® ¿î¿µÃ¼Á¦¿¡¼­µµ ¸Þ¸ð¸®´Â ÀÌ¿Í ºñ½ÁÇÑ ¹æ½ÄÀ¸·Î °ü¸®µË´Ï´Ù) ¸Þ¸ð¸® ±¸°£ 0x10000000 ¿¡¼­ºÎÅÍ 0x7FFFFFFF ±îÁö, ¾à 1.8±â°¡ ¹ÙÀÌÆ®°¡ µ¥ÀÌÅÍ¿Í ½ºÅà ¼¼±×¸ÕÆ®°¡ µé¾î°¥¼ö ÀÖ´Â ÀÚ¸®ÀÔ´Ï´Ù.

ÇÁ·Î±×·¥ÀÌ ½ÃÀ۵ɶ§ ½ºÅÃÆ÷ÀÎÅÍ $sp´Â À¯Àú ¸Þ¸ð¸®ÀÇ ¸Ç À§ ¹Ù·Î ¾Æ·¡ ¸¶Áö¸· ¿öµåÀÇ ÁÖ¼ÒÀÎ 0x7FFFEFFC¸¦ °¡¸®Åµ´Ï´Ù. ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ´Âµ¿¾È ½ºÅÃÀº ¾Æ·¡ (»ç¿ë°¡´ÉÇÑ °ø°£) À¸·Î È®ÀåµË´Ï´Ù. µ¥ÀÌÅÍ ¼¼±×¸ÕÆ®´Â ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ¸é¼­ À§·Î ÀÚ¶ø´Ï´Ù. ¹°·Ð µ¿ÀûÀÎ ÇÁ·Î±×·¥¿¡¼­´Â µÎ ¼¼±×¸ÕÆ® ¸ðµÎ È®Àå°ú ¼öÃàÀ» ¹Ýº¹ÇÕ´Ï´Ù. ¸¸¾à ´õÀÌ»ó ¸Þ¸ð¸®°¡ ³²¾ÆÀÖÁö ¾Ê´Ù¸é µÎ ¼¼±×¸ÕÆ®´Â Áß°£ ¾îµð¼±°¡ ¸¸³ª°Ô µË´Ï´Ù.

´Ù¸¥ (ÈÄÁø) ¹æ¹ýÀ¸·Î´Â, 0x10000000¿¡¼­ 0x7FFFFFFF±îÁöÀÇ ¸Þ¸ð¸®¸¦ ¹ÝÀ¸·Î ³ª´² ½ºÅðú µ¥ÀÌÅÍ ±¸°£À¸·Î ¾²´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ±×·¯³ª ÀÌ·± ¹æ¹ýÀ¸·Î´Â µ¥ÀÌÅͼ¼±×¸ÕÆ®¿¡ ¾ÆÁÖ ÀûÀº µ¥ÀÌÅͰ¡ ÀÖ´õ¶óµµ ½ºÅÃÀÌ ±× °ø°£¿¡ °¤È÷´Â ¼ö°¡ »ý±é´Ï´Ù.

Áú¹®:
¾î´À ¼¼±×¸ÕÆ®°¡ Äڵ带 ÀúÀåÇϴµ¥ ¾²ÀԴϱî?
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.