奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語(yǔ)言

C函數(shù)的調(diào)用過(guò)程

時(shí)間:2024-07-15 19:48:33 C語(yǔ)言 我要投稿
  • 相關(guān)推薦

C函數(shù)的調(diào)用過(guò)程

  在C代碼中通過(guò)asm或__asm__嵌入一些匯編代碼,如進(jìn)行系統(tǒng)調(diào)用,使用寄存器以提高性能能,需要對(duì)函數(shù)調(diào)用過(guò)程中的堆棧幀(Stack Frame)、CPU寄存器、GCC inlie assembly等了如指掌,F(xiàn)在看看函數(shù)調(diào)用過(guò)程吧。

C函數(shù)的調(diào)用過(guò)程

  1. Linux 進(jìn)程虛擬地址空間

  以32位操作系統(tǒng)為例,下面是Linux進(jìn)程地址空間布局:

  32位虛擬地址空間的高1GB的空間是留給操作系統(tǒng)內(nèi)核的,棧由高地址到低地址向下增長(zhǎng),堆由低地址到高地址向上增長(zhǎng)。

  C中如 malloc 等分配的內(nèi)存在堆中分配。初始化了的靜態(tài)變量和全局變量放在Data段中。未初始化的全局變量和局部靜態(tài)變量放在Bss段中,更準(zhǔn)確的說(shuō)是在Bss段為它們預(yù)留了空間。非靜態(tài)局部變量是在函數(shù)調(diào)用過(guò)程中暫存在棧上的。

  2. 函數(shù)的堆棧幀

  棧在程序運(yùn)行中具有舉足輕重的地位。最重要的,棧保存了一個(gè)函數(shù)調(diào)用所需要的維護(hù)信息,被稱為堆棧幀(Stack Frame),一個(gè)函數(shù)(被調(diào)函數(shù))的堆棧幀一般包括下面幾個(gè)方面的內(nèi)容:

 。1) 函數(shù)參數(shù),默認(rèn)調(diào)用慣例情況下從右向左的順序依次把參數(shù)壓入棧中。由函數(shù)調(diào)用方執(zhí)行。

 。2) 函數(shù)的返回地址,即調(diào)用方調(diào)用此函數(shù)(如call func1)的下一條指令的地址。函數(shù)調(diào)用方(call指令)執(zhí)行。

 。3) 保存調(diào)用方函數(shù)的'EBP寄存器,即將調(diào)用方函數(shù)的EBP壓入堆棧,并令EBP指向此棧中的地址:pushl %ebp; movl %esp, %ebp。由被調(diào)函數(shù)執(zhí)行。

 。4) 上下文:保存在函數(shù)調(diào)用過(guò)程中需要保持不變的寄存器(函數(shù)調(diào)用方的),如ebx,esi,edi等。由被調(diào)函數(shù)執(zhí)行。

 。5) 臨時(shí)變量,如非靜態(tài)局部變量。

  下面是一個(gè)函數(shù)的堆棧幀結(jié)構(gòu)圖:

  壓入函數(shù)參數(shù)和返回地址的過(guò)程是由函數(shù)調(diào)用方在調(diào)用函數(shù)之前將其壓入棧中,每個(gè)函數(shù)執(zhí)行后首先要執(zhí)行的就是把函數(shù)調(diào)用方的EBP寄存器壓入棧中,之后是在棧上開(kāi)辟一些空間存放局部變量,最后把要保存的寄存器壓入棧中。

【C函數(shù)的調(diào)用過(guò)程】相關(guān)文章:

C++調(diào)用C函數(shù)的方法05-21

C語(yǔ)言函數(shù)的遞歸調(diào)用08-26

C語(yǔ)言函數(shù)的運(yùn)用及調(diào)用10-09

java調(diào)用c函數(shù)的實(shí)例09-16

C++如何調(diào)用matlab函數(shù)06-29

C語(yǔ)言函數(shù)的遞歸和調(diào)用08-22

C語(yǔ)言函數(shù)調(diào)用與參數(shù)傳遞08-05

Java程序調(diào)用C/C++語(yǔ)言函數(shù)的方法07-31

c語(yǔ)言調(diào)用函數(shù)的使用方法11-04

在C語(yǔ)言中函數(shù)調(diào)用方式的區(qū)別09-01

主站蜘蛛池模板: 西峡县| 临桂县| 唐海县| 商河县| 新余市| 乐安县| 苗栗市| 阿荣旗| 儋州市| 靖州| 集贤县| 韶关市| 黔西县| 宁海县| 镇平县| 临桂县| 扬中市| 永定县| 沈丘县| 宜章县| 长寿区| 平远县| 贺兰县| 玛沁县| 皮山县| 庄浪县| 杂多县| 淅川县| 三河市| 永定县| 印江| 澄城县| 会理县| 璧山县| 新巴尔虎左旗| 泾源县| 五莲县| 新干县| 梨树县| 邢台县| 美姑县|