如果我有ASM呼叫過程:假設局部變量的初始值爲零是否正確?
push ebp
mov ebp esp
sub ebp, 8
我可以假設現在,無論[EBP-4]和[EBP-8]初始化爲零,或者他們可以有隨機值?
如果我有ASM呼叫過程:假設局部變量的初始值爲零是否正確?
push ebp
mov ebp esp
sub ebp, 8
我可以假設現在,無論[EBP-4]和[EBP-8]初始化爲零,或者他們可以有隨機值?
他們將有什麼價值是在存儲器之前,這是不太可能0
。這本身不是「隨機的」 - 事實上,它可能有點可預測;這通常不會有什麼好處,只是沒有得到有關在使用它RNG :)
記住任何聰明的想法,你的代碼所做的一切是:
,CPU也不會讀任何東西到這個除此之外,除非你告訴它。這是彙編程序的精髓。而且,在正常算術中使用時,ESP根本不是特別的 - 它只是一個數字。
他們將隨機值。
嗯?爲什麼downvote?它回答了這個問題,並沒有錯。 – 2009-09-11 07:10:36
你不應該依賴於這個,因爲這可能取決於執行。處於可預測狀態時,始終以特定值初始化寄存器或存儲單元。
他們肯定還會有隨機值,除非你明確地對它們進行初始化。
關鍵的原因:你所做的只是移動指針。你所做的任何事情都不會導致它們被歸零。 – 2009-09-10 20:48:53
感謝spoting該子EBP,8。我真的以爲是EBP:S。我現在正在閱讀Barlet的80x86彙編語言和計算機體系結構程序介紹和堆棧章節,以便我終於明白堆棧是如何工作的。 – 2009-09-10 21:48:27