2017-05-07 71 views
0

當堆棧指針移回原來的位置時,會發生什麼情況,但保存在堆棧中的值沒有從內存加載到寄存器文件中?即當堆棧指針移回時,值仍然存在於堆棧內存中。堆棧指針移回,但值沒有加載到註冊文件?

+0

什麼也沒有發生,完全符合你描述的要求。通過向一個方向移動堆棧指針,可以在堆棧上分配內存,然後通過向相反方向移動堆棧指針釋放內存。 – Michael

回答

0

堆棧指針($ sp)正如名稱暗示的指針,指向一個地址。

比方說,這是我們的記憶,並在beggining $ SP持有ADRESS 「0x..01」

... | 0x..01 | 0x..02 | 0x..03 | ...

sw $a0,0($sp)#存儲在$ SP ADRESS的第一偏移的$ A0 (這是0x..01在這個例子中)

addi $sp,$sp,4#$移動藻

現在讓我們看看我們有什麼。 $ sp不再指向0x..01,因爲我們已經在第二行中更改了它,但$ a0的值仍然存儲在0x..01。如果我們在此之後編寫另一個sw命令,新值將被存儲在$ sp的新地址中。

總結: $ sp擁有當前單元的地址。當您更改$ sp時,您只能更改$ sp指出的位置。