亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 2440init.s中C語言入口函數(shù)不用main的原因? [打印本頁]

作者: laoniu_sichuan    時間: 2013-11-11 11:39
標(biāo)題: 2440init.s中C語言入口函數(shù)不用main的原因?
如題所示:想問問各位2440init.s中C語言入口函數(shù)不用main的原因?
網(wǎng)上找了很久沒有找到答案。
作者: laoniu_sichuan    時間: 2013-11-24 15:16
就是很多C語言入口函數(shù)取名為Main,xmain之類的,但是就是不用main。這是為什么呢,求大神講解!
作者: zj47596731    時間: 2013-11-29 14:13
最終還是main
作者: crifan    時間: 2013-12-01 01:00
“想問問各位2440init.s中C語言入口函數(shù)不用main的原因?”
1.main函數(shù),是你所見到的,相對來說,高級語言,尤其是C語言中,常見的入口函數(shù)。
但是2440init.s中,是匯編語言,其內(nèi)部的邏輯,和C語言,完全不同:
匯編語言,CPU直接可以開始執(zhí)行
C語言,需要在真正代碼(你所理解的main函數(shù))執(zhí)行之前,建立好對應(yīng)的環(huán)境
所以:
你需要去搞懂,main函數(shù)執(zhí)行之前,做了哪些事情
相關(guān)帖子供你參考:
main函數(shù)之前–真正的函數(shù)執(zhí)行入口或開始
Main函數(shù)之前 v2011-10-13

2.而關(guān)于匯編2440init.s的內(nèi)部執(zhí)行邏輯
我沒去分析過該文件
但是分享過其他的類似的匯編
你可以參考看看:
Uboot中start.S源碼的指令級的詳盡解析
尤其是其中的:

3.其實,對于你的問題,
真正全面和透徹的解釋,是給你分析main函數(shù)背后的邏輯,
尤其是代碼執(zhí)行的邏輯,
其實涉及到編譯,鏈接,加載,執(zhí)行,等過程
這部分內(nèi)容,搞懂后,你才能真正的明白。
但是這些內(nèi)容,不是幾句就能說清楚的。
之前看過的,相關(guān)的書,值得推薦的,這個你可以看看:
程序員的自我修養(yǎng)
作者: crifan    時間: 2013-12-01 01:10
回復(fù) 3# zj47596731


    uboot里面,最終執(zhí)行到的不是main,而跳轉(zhuǎn)到對應(yīng)的啟動命令,去啟動Linux內(nèi)核。

其中,部分的執(zhí)行邏輯是:
假如是arm的話,
。。。。
最終會執(zhí)行到
Board.c (lib_arm)    14903    2009/9/10
中的:
start_armboot
然后調(diào)用
Main.c (common)    31097    2009/9/10
中的:
main_loop
其中最后會運行到:
run_command
然后運行你的啟動命令。
。。。
最終會去啟動Linux。






歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2