亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

java - C,C++函數(shù)調(diào)用時(shí)入棧順序 是編譯時(shí)還是運(yùn)行時(shí)完成的?

瀏覽:95日期:2024-02-06 15:27:57

問題描述

我的理解是靜態(tài)編譯時(shí),因?yàn)镃語言是過程性語言只能靜態(tài)聯(lián)編不能動(dòng)態(tài)聯(lián)編,而C++編譯于此類似,所以是編譯時(shí)完全。不知道這樣對(duì)不對(duì)?

問題解答

回答1:

入棧的順序是編譯時(shí)確定的。

函數(shù)調(diào)用之前需要入棧的主要是函數(shù)參數(shù),而參數(shù)都是固定的(可變參數(shù)只是用宏確定偏移量)。 調(diào)用函數(shù)的代碼是放在代碼段的,入棧都是以指令方式進(jìn)行的,所以順序都是編譯時(shí)確定的。

回答2:

@lianera 說的不錯(cuò),入棧的順序是編譯時(shí)確定的。

我這給你看個(gè)例子:我有段代碼是這樣的

#include <stdio.h>int test_fun(int a, int b){ return a + b; }int main(int argc, char *argv[]){ int A, B, ret; A = 3; B = 4; ret = test_fun(A, B); return 1;}

編譯后,他的匯編代碼是這樣的

int test_fun(int a, int b){ 400474: 55 push %rbp 400475: 48 89 e5 mov %rsp,%rbp // $edi存的是A的值,$esi存的是B的值,將他們壓入棧中 400478: 89 7d fc mov %edi,-0x4(%rbp) 40047b: 89 75 f8 mov %esi,-0x8(%rbp) return a + b; 40047e: 8b 45 f8 mov -0x8(%rbp),%eax 400481: 8b 55 fc mov -0x4(%rbp),%edx 400484: 8d 04 02 lea (%rdx,%rax,1),%eax}int main(int argc, char *argv[]){ 400489: 55 push %rbp 40048a: 48 89 e5 mov %rsp,%rbp 40048d: 48 83 ec 20 sub $0x20,%rsp 400491: 89 7d ec mov %edi,-0x14(%rbp) 400494: 48 89 75 e0 mov %rsi,-0x20(%rbp) int A, B, ret; // 壓入本地變量A A = 3; 400498: c7 45 f4 03 00 00 00 movl $0x3,-0xc(%rbp) // 壓入本地變量B B = 4; 40049f: c7 45 f8 04 00 00 00 movl $0x4,-0x8(%rbp) ret = test_fun(A, B); 4004a6: 8b 55 f8 mov -0x8(%rbp),%edx 4004a9: 8b 45 f4 mov -0xc(%rbp),%eax // 將A和B的值放入相應(yīng)的寄存器 4004ac: 89 d6 mov %edx,%esi 4004ae: 89 c7 mov %eax,%edi // 調(diào)用test_fun 4004b0: e8 bf ff ff ff callq 400474 <test_fun> 4004b5: 89 45 fc mov %eax,-0x4(%rbp) return 1; 4004b8: b8 01 00 00 00 mov $0x1,%eax}

不懂匯編也沒關(guān)系,在編譯過程中,參數(shù)的傳遞順序,參數(shù)、本地變量等應(yīng)該放在棧的哪個(gè)位置(相對(duì)位置)都是定了的。當(dāng)程序運(yùn)行到相應(yīng)程序后會(huì)按照編譯好的順序?qū)_M(jìn)行操作。

回答3:

入棧這個(gè)不是運(yùn)行時(shí)才有的過程嗎?編譯只是翻譯為字節(jié)碼的過程,為什么會(huì)有入棧?

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 亚洲影视自拍揄拍愉拍 | 中国一级一级全黄 | 手机看片国产欧美日韩高清 | 国产成人精品在视频 | 成人黄色一级毛片 | 性感美女香蕉视频 | 亚洲欧美日韩视频一区 | 久青草国产手机在线视频 | 色婷婷社区 | 九九在线视频 | 亚洲精品毛片久久久久久久 | 久久久久久99精品 | 亚洲人成网站色7799在线观看 | 国产人妖性视频在线 | 久久精品视频在线观看榴莲视频 | 一级毛片在播放免费 | 欧美日韩1区 | 精品国产香蕉伊思人在线又爽又黄 | 日韩a无v码在线播放免费 | xxxx鞠婧祎xxxx网站视频观看 | 日本特交大片免费观看 | 国内精品综合九九久久精品 | 国产一级特黄aa大片高清 | 999国产视频 | 精品国精品国产自在久国产不卡 | 黄视频免费观看 | 特级片免费看 | 国内精品一区视频在线播放 | 日韩精品一区二区三区四区 | 国产精品成久久久久三级 | 亚洲欧美日韩中文综合v日本 | 一级视频黄色 | 在线观看网 | 国产欧美一区二区三区在线 | 日本欧美大码aⅴ在线播放 日本欧美不卡一区二区三区在线 | 成人午夜影视全部免费看 | 国产成人精品永久免费视频 | 特别黄的免费视频大片 | 91久久久久久久 | 涩色在线 | 真实国语对白视频播放 |