標題: 高級語言c [打印本頁] 作者: 51黑tt 時間: 2016-3-6 02:52 標題: 高級語言c long long ago ,對于計算機而言,大部分是數(shù)學家在玩,與數(shù)字打交道,那時候是用01代碼編寫程序,terrible,有人發(fā)現(xiàn)這樣不行呀,01代碼沒有什么規(guī)律,記不住,所以有人想到,把01代碼總結成匯編語言,這樣為了方便人家記憶,提高編程效率,但是對于每種cpu而言,匯編語言都不一樣,都煩呀。。例如intel 的奔騰系列,AMD的cpu,intel還有其他的系列cpu,01代碼對應的功能不一樣,所以匯編語言也不一樣,以我知道的為例。arm7,和51cpu匯編語言那是相差很遠呀。。。完全不是一回事。arm7.arm9,arm11的匯編也不完全相同,也有差別,也要找到差別,哎、。、、剛才arm7和51,不形象,arm7和8086.夠形象吧。。。如果從8086匯編程序員轉(zhuǎn)到arm匯編程序員上,那完全是干另一件事呀。。。所以,01代碼和匯編語言都叫底層語言,機器語言。。
高級語言呢。。例如c語言,它是怎么運行的了。也就是我個人的理解,例如你在IDE中寫一個c程序,IDE中包含了編譯器和編輯器,你點擊編譯按鈕,編譯器會把c語言編譯成bin(0,1)代碼,我估計的::編譯器有下列步驟
1.預處理 #include<stdio.h> #ifdef #endif and so on
2. 編譯 把c/c++代碼翻譯成匯編語言。 (這個匯編語言是對應平臺的匯編語言) 平臺指對應操作系統(tǒng)和cpu,對于pc機,cpu就那么幾種,系統(tǒng)也是那么幾種了,例如你的pc機是xp,intelcpu ,編譯器就把c代碼翻譯成xp和inte cpu對應的匯編語言了。
3.匯編, 把上面的匯編語言翻譯匯編成機器代碼(01)、,linux下一般表現(xiàn)為ELF目標文件(obj文件)
4.連接。把程序的01代碼和庫文件的01代碼連接起來,構成特定平臺上運行的可執(zhí)行文件了。
如果 對arm_linux_gcc了解的話,就容易理解了,嘻嘻。。。arm_linux_gcc可以編譯c語言,arm匯編語言。裸機程序可以,也可以是應用程序了,也就是arm上linux上的應用程序。。。這就是平臺了。
這樣也就引出了交叉編譯了,什么是交叉編譯,也就是在一個平臺上編譯生成另一個平臺上運行的可執(zhí)行程序。
在linux和intel平臺上編譯生成arm和linux的平臺的可執(zhí)行程序。。。
同時我回憶了下c#,先把 c# 源程序由編譯器生成中間代碼( microsoft intermediate language ) microsoft 中間代碼了, 我們的 exe 其實就是這個東西了,,在 xp 機子上點擊這個文件,就由。 Net framework 中的 Just-In-Time 編譯器就把這個中間代碼 MSIL 編譯為專用于 OS (這里指 xp 了)和目標機器結構的本機代碼了,這樣才可以執(zhí)行了。