1樓:北極
但這種做法不可取,也不可能實現。
首先esp的值不僅僅儲存在esp裡,換句話說,指向棧上的東西,不僅僅是只有esp,比如ebp也是可以用來做定址的。甚至在記憶體裡,多級指標都是指向舊的記憶體區域,你不可能也沒辦法把這些記憶體裡的資料都指向新的棧空間,因為對於記憶體來說,都是乙個乙個數值,它是指標,還是乙個整型數,沒人知道。
所以, 跟許可權無關,你這個思路本身就是錯的。
2樓:張強
修改esp時要確定修改的位址是可用的,不是受cpu和系統保護的,當然裸機上你可以使用任意位址
並且修改了esp,資料也要造上去,並且要造對,不然pop時資料就亂掉了
3樓:chainhelen
不考慮正常的編譯流程
問題中 如果將esp設定為0x606200
雖然其實是同乙個實體地址 ,按照我對於上下文的理解,這兩個並不是指向同乙個實體地址.
4樓:半導體人類研究所所長
哥哥,esp是堆疊首位址,手工pop之後棧亂了,把編譯器預生成的push,pop對打亂了,只有正常的push,pop一壓一彈才能保證正常執行
暫存器和儲存器有什麼異同?
暫存器是一種儲存器啊,這是大概念和小概念的問題,集合與子集的關係 儲存器按照到cpu距離由近到遠 訪存速度由高到低 排列分別是暫存器,快取,主存,輔存。ROM是唯讀儲存器,僅限於儲存bios一類的程式 請看william Stallings的Computer Organization and Arc...
為什麼X86的暫存器數量沒有隨著效能的提公升而增加?
幸福渠水到俺村 那是指令集可見暫存器,不是物理暫存器,指令集可見暫存器為了維持相容性,不能做輕易的改動。x86指令可以直接訪問記憶體。所以ISA暫存器數目並不是非常重要。現代處理器內部已經微碼化了,並且擁有上百個物理暫存器,例如Sunnycove 就有多達280個整數暫存器,微碼化之後,很多直接訪問...
C 中函式的引數傳遞中暫存器的作用是什麼?
Sting 暫存器的作用跟函式的呼叫約定有關,而呼叫約定又跟編譯器有關,c 標準沒有這方面的規定。以vc來說,大致有這麼幾種 cdecl,stdcall,fastcall,thiscall,vectorcall。呼叫約定規定了引數如何傳遞 通過暫存器還是棧,左到右還是右到左進棧 值如何返回,呼叫方還...