3 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
準(zhǔn)確地說是編譯器為可執(zhí)行文件加上了一個(gè)啟動(dòng)例程,ELF頭部的入口地址就指向該啟動(dòng)例程,然后在啟動(dòng)例程中有下面一句:80482fc: e8 c3 ff ff ff call 80482c4 <__libc_start_main@plt>通過它調(diào)用C庫的_libc_start_main,再調(diào)用我們的main由于main函數(shù)是被啟動(dòng)例程調(diào)用的,所以從main函數(shù)return時(shí)仍返回到啟動(dòng)例程中,main函數(shù)的返回值被啟動(dòng)例程得到,如果將啟動(dòng)例程表示成等價(jià)的C代碼(實(shí)際上啟動(dòng)例程一般是直接用匯編寫的),則它調(diào)用main函數(shù)的形式是:exit(main(argc, argv));

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
執(zhí)行start()這個(gè)該函數(shù)唄;
看這個(gè)函數(shù)風(fēng)格一概是寫程序的人自幾定義的,叫這個(gè)名字的函數(shù)一般都是初始化一些參數(shù)、分配一些內(nèi)存什么的準(zhǔn)備工作。
c/c++內(nèi)部定義的一些函數(shù)的話都會(huì)以_開頭,類似于_start()這種。
- 3 回答
- 0 關(guān)注
- 1017 瀏覽
添加回答
舉報(bào)