彙編中retn 4的含義詳析

2021-08-11 15:00:54 字數 558 閱讀 9186

retn 4

是個函式返回指令。

以前一直糾結這個retn的暫存器操作順序,手頭正好在除錯,詳細跟了一下,豁然開朗,特分享。

先假設個環境:

retn 4未執行時,esp=0013feb8;eip=5d1d8b97;而[0013feb8]=7c974a19

執行retn 4之後:

首先eip=[0013feb8]

:即此時cpu先指揮eip獲取到棧中0013feb8起4個位元組的值7c974a19,作為retn跳轉的目標,然後cpu跳過去等著執行7c974a19位址下的命令。

此時,eip=7c974a19

然後因為retn 4裡面有個4,此時cpu才讓esp棧+4+4,使得esp=0013fec0。

為啥出現兩個+4?另乙個+4的原因在於:如果命令是retn,而不是retn 4,那esp將當前值(0013feb8)給了eip之後,自動會來乙個+4,即esp會為0013febc。

總結下來:

retn操作:先eip=esp,然後esp=esp+4

retn n操作:先eip=esp,然後esp=esp+4+n

詳析VC中座標系的建立

詳析vc中座標系的建立 建立乙個合適的 座標系可以為我們的繪圖帶來很大的方便 下面介紹一下如何在vc中建立我們想要的座標系。一 裝置座標和邏輯座標 裝置座標 device coordinate 又稱為物理座標 physical coordinate 是指輸出裝置上的座標。通常將螢幕上的裝置座標稱為螢...

作業系統中的程序同步詳析

程序同步包括程序的互斥和程序的同步兩個方面,是作業系統管理共享資源的一種手段。從考試情況來看,許多考生對這部分知識掌握的不好,理解的不透。用 操作解決程序同步問題時首先應確定問題是屬於程序互斥還是程序同步,或是互斥與同步的混合問題。然後根據共享資源的數量以及使用共享資源的規則正確的定義訊號量及其初值...

從彙編看c 中臨時物件的析構時機

c 中,臨時物件一旦不需要,就會呼叫析構函式,釋放其占有的資源 而具名物件則是與建立的順序相反,依次呼叫析構函式。c 原始碼 class x x int main 對應的彙編碼 main proc 11 int main lea ecx,dword ptr x2 ebp 獲取x2的首位址,作為隱含引...