乙隻程式猿的養成日記 第一章 第六節 棧幀結構

2021-08-13 02:52:14 字數 942 閱讀 5151

第一步 初始化  建立mian函式的棧幀結構。

第二步 初始化 儲存 變數「a」

第三步 初始化 儲存 變數「b」

第四步 將變數「b」的值儲存到 暫存器 「eax」  並將 暫存器壓入 「main」 函式的棧幀中。

第五步 將變數「a」的值儲存到 暫存器 「ecx」  並將 暫存器壓入 「main」 函式的棧幀中。

2,隨即,跳轉至指定函式。(jmp)

第七步 將 「ebp」暫存器中的位址 壓入棧中;

第八步 將「ebp」棧底暫存器下移 與「esp」重合;

第九步 將「esp」棧頂暫存器下移44h,建立屬於my-add的棧幀

第十步 將「ebp」+8即「a」的值寫入「eax」暫存器後,再與「ebp」+12即「b」完成相加。相加後的值存入「eax」暫存器壓入my-add函式的棧底。

第十一步 返回 將「ebp」-4即z的值儲存在暫存器「eax」中。

第十二步 將「esp」暫存器與「ebp」重合,釋放my-add函式的棧幀。

第十三步 「pop」指令將「main-ebp」放入「ebp」暫存器,「esp」棧頂暫存器隨機上移,「ebp」暫存器回到「main」函式棧底。

第十四步 「ret」指令 跳出函式 將「main-ret」儲存到「eip」暫存器。

第十五步 「esp」棧頂暫存器上移8回到最初的位置;將「eax」中存放的z的值即a+b賦值給c變數。

第一章 簡單的順序程式

1.1 a b問題 小朋友 include int main 犇犇 include int main 1.2 比較char型的ascii碼大小 小朋友 include int main else return 0 犇犇 include int main 1.3 有關四則運算的練習 小朋友 inclu...

第一章實驗 簡單的C 程式

實驗目的和要求 1.熟悉code blocks 16.01編譯系統的常用功能。2.學會使用code blocks 16.01編譯系統實驗的c 程式。3.熟悉c 程式的基本結構,學會使用簡單的輸入 輸出操作。實驗內容 1.編譯下列程式,改正所出現的錯誤資訊,並寫出輸出結果。執行結果如下 修改程式如下 ...

乙個程式猿寫的網遊小說(第一章 少年阿九)

幾年前在企業裡外包做erp系統那段時間,有段時間特別閒,就心思著寫網遊 磨磨唧唧就寫了那麼一章節,在qq閱讀上發布了,後來斷更了,qq閱讀就給下架了,也曾用了許多心思,想來浪費,發在csdn裡記錄一下 想當初高中時代就立志搞網遊開發之類的發家致富,後來現實磋磨,逐漸認清這理想的成本太高,已然負擔不起...