|
|
long long ago ,對(duì)于計(jì)算機(jī)而言,大部分是數(shù)學(xué)家在玩,與數(shù)字打交道,那時(shí)候是用01代碼編寫(xiě)程序,terrible,有人發(fā)現(xiàn)這樣不行呀,01代碼沒(méi)有什么規(guī)律,記不住,所以有人想到,把01代碼總結(jié)成匯編語(yǔ)言,這樣為了方便人家記憶,提高編程效率,但是對(duì)于每種cpu而言,匯編語(yǔ)言都不一樣,都煩呀。。例如intel 的奔騰系列,AMD的cpu,intel還有其他的系列cpu,01代碼對(duì)應(yīng)的功能不一樣,所以匯編語(yǔ)言也不一樣,以我知道的為例。arm7,和51cpu匯編語(yǔ)言那是相差很遠(yuǎn)呀。。。完全不是一回事。arm7.arm9,arm11的匯編也不完全相同,也有差別,也要找到差別,哎、。、、剛才arm7和51,不形象,arm7和8086.夠形象吧。。。如果從8086匯編程序員轉(zhuǎn)到arm匯編程序員上,那完全是干另一件事呀。。。所以,01代碼和匯編語(yǔ)言都叫底層語(yǔ)言,機(jī)器語(yǔ)言。。
高級(jí)語(yǔ)言呢。。例如c語(yǔ)言,它是怎么運(yùn)行的了。也就是我個(gè)人的理解,例如你在IDE中寫(xiě)一個(gè)c程序,IDE中包含了編譯器和編輯器,你點(diǎn)擊編譯按鈕,編譯器會(huì)把c語(yǔ)言編譯成bin(0,1)代碼,我估計(jì)的::編譯器有下列步驟
1.預(yù)處理 #include<stdio.h> #ifdef #endif and so on
2. 編譯 把c/c++代碼翻譯成匯編語(yǔ)言。 (這個(gè)匯編語(yǔ)言是對(duì)應(yīng)平臺(tái)的匯編語(yǔ)言) 平臺(tái)指對(duì)應(yīng)操作系統(tǒng)和cpu,對(duì)于pc機(jī),cpu就那么幾種,系統(tǒng)也是那么幾種了,例如你的pc機(jī)是xp,intelcpu ,編譯器就把c代碼翻譯成xp和inte cpu對(duì)應(yīng)的匯編語(yǔ)言了。
3.匯編, 把上面的匯編語(yǔ)言翻譯匯編成機(jī)器代碼(01)、,linux下一般表現(xiàn)為ELF目標(biāo)文件(obj文件)
4.連接。把程序的01代碼和庫(kù)文件的01代碼連接起來(lái),構(gòu)成特定平臺(tái)上運(yùn)行的可執(zhí)行文件了。
如果 對(duì)arm_linux_gcc了解的話,就容易理解了,嘻嘻。。。arm_linux_gcc可以編譯c語(yǔ)言,arm匯編語(yǔ)言。裸機(jī)程序可以,也可以是應(yīng)用程序了,也就是arm上linux上的應(yīng)用程序。。。這就是平臺(tái)了。
這樣也就引出了交叉編譯了,什么是交叉編譯,也就是在一個(gè)平臺(tái)上編譯生成另一個(gè)平臺(tái)上運(yùn)行的可執(zhí)行程序。
在linux和intel平臺(tái)上編譯生成arm和linux的平臺(tái)的可執(zhí)行程序。。。
同時(shí)我回憶了下c#,先把 c# 源程序由編譯器生成中間代碼( microsoft intermediate language ) microsoft 中間代碼了, 我們的 exe 其實(shí)就是這個(gè)東西了,,在 xp 機(jī)子上點(diǎn)擊這個(gè)文件,就由。 Net framework 中的 Just-In-Time 編譯器就把這個(gè)中間代碼 MSIL 編譯為專(zhuān)用于 OS (這里指 xp 了)和目標(biāo)機(jī)器結(jié)構(gòu)的本機(jī)代碼了,這樣才可以執(zhí)行了。
記錄下平時(shí)小技巧吧:
一。。復(fù)制的文字在word下有背景怎么辦??、
1.。復(fù)制到txt,背景消失
2.word中工具欄中兩個(gè)A的格式窗口有清除格式。。選擇就行了
二。 有時(shí)候下載的word擴(kuò)展名是docx,,有些人可能會(huì)想,會(huì)不會(huì)是人家出現(xiàn)搞錯(cuò)了呢。。非也。。
docx是office 2007(word 2007)的擴(kuò)展名,doc是office 2003(word 2003)的,聽(tīng)說(shuō)為了節(jié)省存儲(chǔ)空間,可以下載個(gè)docx2doc converter工具,更猛的是裝office 2007.。呵呵。;蛘哐b個(gè)office2003變成2007 的補(bǔ)丁。
|
|