亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語言函數(shù)棧幀解析

 更新時間:2021年09月07日 10:13:22   作者:Ayanami___Rei  
下面小編就為大家?guī)硪黄獪\談C語言函數(shù)調(diào)用參數(shù)壓棧的相關(guān)問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一、什么是函數(shù)棧幀

 1.寄存器:

eax, ebx, ecx ...

ebp - 存放了指向函數(shù)棧幀棧底的地址

esp - 存放了指向函數(shù)棧幀棧頂?shù)牡刂?/p>

2.函數(shù)棧幀

函數(shù)被調(diào)用時,系統(tǒng)會在棧區(qū)為該函數(shù)開辟一塊??臻g,這個??臻g就是該函數(shù)的函數(shù)棧幀。

以main函數(shù)的調(diào)用為例

 3.棧幀的作用和維護

棧幀也叫過程活動記錄,是編譯器用來實現(xiàn)函數(shù)調(diào)用過程的一種數(shù)據(jù)結(jié)構(gòu)。從邏輯上講,棧幀為一個函數(shù)提供了執(zhí)行環(huán)境。

棧是先用高地址再用低地址,棧幀控制和保存了一個函數(shù)所需要的各種信息。

棧幀的維護離不開ebp和esp寄存器,ebp存放了指向棧幀的棧底地址的指針,esp則存放指向棧頂?shù)刂返闹羔槨?/p>

 4.棧幀結(jié)構(gòu)

以main函數(shù)為例:

 

二、函數(shù)棧幀的創(chuàng)建

環(huán)境為VS2019

​
​#include<stdio.h>
int ADD(int x, int y)
{
    int z=0;
    z=x+y;
	return z;
} 
int main()
{
	int a = 10;
	int b = 20;
	int c = 0;
	c = ADD(a, b); 
	return 0;
}​

1.匯編代碼

要研究函數(shù)棧幀我們要研究c程序的匯編代碼。如圖所示:

 

2.main函數(shù)

 

2.棧幀創(chuàng)建:

 

3.步驟

 

 

 

 

 

main函數(shù)的函數(shù)棧幀的創(chuàng)建和數(shù)據(jù)初始化就完成了。

4.ADD函數(shù)棧幀的創(chuàng)建

 add函數(shù)棧幀的創(chuàng)建和main函數(shù)棧幀創(chuàng)建是一樣的,值得注意的是,ADD函數(shù)執(zhí)行結(jié)束后的返回值保存在了寄存器eax中,就是避免ADD函數(shù)棧幀銷毀時,主函數(shù)無法訪問ADD返回值。由此可見函數(shù)返回值是如何返回的。

三.函數(shù)棧幀的銷毀

1.匯編語言

四.了解

1.函數(shù)傳參

 2.函數(shù)返回值如何返回

 3.函數(shù)中變量如何初始化和賦值

4.函數(shù)執(zhí)行結(jié)束后系統(tǒng)進行了什么操作

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容

相關(guān)文章

  • 必須知道的C語言八大排序算法(收藏)

    必須知道的C語言八大排序算法(收藏)

    這篇文章主要介紹了C語言八大排序算法的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-10-10
  • C++中的枚舉enum類型使用示例詳解

    C++中的枚舉enum類型使用示例詳解

    枚舉和類相似,能夠定義一種新的數(shù)據(jù)類型,不同的是,枚舉是將一組整形常量組織在一起,所以和類的使用方法有一些類似之處,這篇文章主要介紹了C++中的枚舉enum類型使用示例詳解,需要的朋友可以參考下
    2024-08-08
  • 詳解C語言基礎的類型轉(zhuǎn)換

    詳解C語言基礎的類型轉(zhuǎn)換

    這篇文章主要為大家介紹了C語言基礎的類型轉(zhuǎn)換,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Qt編寫地圖之實現(xiàn)覆蓋物坐標和搜索

    Qt編寫地圖之實現(xiàn)覆蓋物坐標和搜索

    地圖應用中經(jīng)常會需要有覆蓋物坐標和搜索的功能,本文將利用Qt實現(xiàn)這一功能,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-03-03
  • C++實現(xiàn)學校運動會管理系統(tǒng)

    C++實現(xiàn)學校運動會管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)學校運動會管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Qt編寫提示進度條的實現(xiàn)示例

    Qt編寫提示進度條的實現(xiàn)示例

    進度條在很地方都可以使用到,Qt自帶的進度條或者操作系統(tǒng)的進度條樣式,不夠炫,本文就介紹一下Qt編寫自定義控件的提示進度條的實現(xiàn)示例,感興趣的可以了解一下
    2021-12-12
  • C語言實現(xiàn)貪吃蛇小游戲

    C語言實現(xiàn)貪吃蛇小游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++大數(shù)模板(推薦)

    C++大數(shù)模板(推薦)

    本篇文章是對C++大數(shù)模板的程序代碼進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++中的哈希容器unordered_map使用示例

    C++中的哈希容器unordered_map使用示例

    這篇文章主要介紹了C++中的哈希容器unordered_map使用示例,本文直接給出實例代碼,并講解了一些hash table的知識,需要的朋友可以參考下
    2015-06-06
  • C++九種排序具體實現(xiàn)代碼

    C++九種排序具體實現(xiàn)代碼

    這篇文章主要介紹了C++九種排序具體實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04

最新評論