最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

 1.寄存器:

eax, ebx, ecx ...

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

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

2.函數(shù)棧幀

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

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

 3.棧幀的作用和維護(hù)

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

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

棧幀的維護(hù)離不開(kāi)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í),主函數(shù)無(wú)法訪問(wèn)ADD返回值。由此可見(jiàn)函數(shù)返回值是如何返回的。

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

1.匯編語(yǔ)言

四.了解

1.函數(shù)傳參

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

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

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

總結(jié)

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

相關(guān)文章

  • C++實(shí)現(xiàn)紅黑樹(shù)應(yīng)用實(shí)例代碼

    C++實(shí)現(xiàn)紅黑樹(shù)應(yīng)用實(shí)例代碼

    紅黑樹(shù)它一種特殊的二叉查找樹(shù),這意味著它滿足二叉查找樹(shù)的特征,但是也有許多自己的特性,這篇文章主要給大家介紹了關(guān)于C++實(shí)現(xiàn)紅黑樹(shù)的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • C++學(xué)習(xí)進(jìn)階篇之類大小計(jì)算和this指針

    C++學(xué)習(xí)進(jìn)階篇之類大小計(jì)算和this指針

    this是C++中的一個(gè)關(guān)鍵字,也是一個(gè)const指針,它指向當(dāng)前對(duì)象,通過(guò)它可以訪問(wèn)當(dāng)前對(duì)象的所有成員,下面這篇文章主要給大家介紹了關(guān)于C++學(xué)習(xí)進(jìn)階篇之類大小計(jì)算和this指針的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • C語(yǔ)言基于EasyX實(shí)現(xiàn)貪吃蛇

    C語(yǔ)言基于EasyX實(shí)現(xiàn)貪吃蛇

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言基于EasyX實(shí)現(xiàn)貪吃蛇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • vs運(yùn)行時(shí)報(bào)C4996代碼錯(cuò)誤的問(wèn)題解決

    vs運(yùn)行時(shí)報(bào)C4996代碼錯(cuò)誤的問(wèn)題解決

    C4996錯(cuò)誤的意思:是VS覺(jué)得strcpy這函數(shù)不安全,建議你使更安全的函數(shù),那么如何解決呢,本文主要介紹了vs運(yùn)行時(shí)報(bào)C4996代碼錯(cuò)誤的問(wèn)題解決,感興趣的可以了解一下
    2024-01-01
  • C++實(shí)現(xiàn)list增刪查改模擬的示例代碼

    C++實(shí)現(xiàn)list增刪查改模擬的示例代碼

    本文主要介紹了C++實(shí)現(xiàn)list增刪查改模擬,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • C語(yǔ)言學(xué)習(xí)之鏈表的實(shí)現(xiàn)詳解

    C語(yǔ)言學(xué)習(xí)之鏈表的實(shí)現(xiàn)詳解

    鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的。這篇文章主要介紹了C語(yǔ)言中鏈表的實(shí)現(xiàn),需要的可以參考一下
    2022-11-11
  • C語(yǔ)言實(shí)現(xiàn)BMP轉(zhuǎn)換JPG的方法

    C語(yǔ)言實(shí)現(xiàn)BMP轉(zhuǎn)換JPG的方法

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)BMP轉(zhuǎn)換JPG的方法,涉及C#圖片格式轉(zhuǎn)換的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • C++超詳細(xì)講解強(qiáng)制類型轉(zhuǎn)換

    C++超詳細(xì)講解強(qiáng)制類型轉(zhuǎn)換

    在C++語(yǔ)言中新增了四個(gè)關(guān)鍵字static_cast、const_cast、reinterpret_cast和dynamic_cast。這四個(gè)關(guān)鍵字都是用于強(qiáng)制類型轉(zhuǎn)換的
    2022-05-05
  • 淺析操作系統(tǒng)中的虛擬地址與物理地址

    淺析操作系統(tǒng)中的虛擬地址與物理地址

    本文主要介紹了操作系統(tǒng)中的虛擬地址與物理地址。在早期的計(jì)算機(jī)中,要運(yùn)行一個(gè)程序,會(huì)把這些程序全都裝入內(nèi)存,程序都是直接運(yùn)行在內(nèi)存上的,也就是說(shuō)程序中訪問(wèn)的內(nèi)存地址都是實(shí)際的物理內(nèi)存地址。那當(dāng)程序同時(shí)運(yùn)行多個(gè)程序時(shí),操作系統(tǒng)是如何為這些程序分配內(nèi)存的呢
    2021-06-06
  • C++ new、delete(new[]、delete[])操作符重載需要注意的問(wèn)題

    C++ new、delete(new[]、delete[])操作符重載需要注意的問(wèn)題

    這篇文章主要介紹了C++ new、delete(new[]、delete[])操作符重載需要注意的問(wèn)題,本文同時(shí)講解了兼容默認(rèn)的 new、delete 的錯(cuò)誤處理方式、多態(tài)的問(wèn)題等內(nèi)容,需要的朋友可以參考下
    2014-10-10

最新評(píng)論

远安县| 科技| 绥棱县| 西乌珠穆沁旗| 太谷县| 嘉定区| 平江县| 简阳市| 安宁市| 浙江省| 上饶县| 平度市| 红原县| 米林县| 凯里市| 广东省| 威远县| 百色市| 祁阳县| 东明县| 政和县| 虎林市| 武川县| 万州区| 博兴县| 讷河市| 巨鹿县| 沅江市| 镇安县| 鄂州市| 平安县| 乐昌市| 子洲县| 凤城市| 琼结县| 惠安县| 海淀区| 高安市| 尚志市| 漳州市| 鱼台县|