作者:張魯波 芯片的發(fā)展趨勢是體積越來越小,速度越來越快,電壓越來越低、能耗越來越省。 軟件就難說了。 最開始用機(jī)器碼的時(shí)候,開發(fā)速度很慢。 后來才有匯編語言,可讀性好多了,出錯(cuò)的概率也小了。匯編語言和機(jī)器碼是有一一對應(yīng)的關(guān)系的,就是為了容易維護(hù)才用匯編代替機(jī)器碼的。 然后,出現(xiàn)C語言,那簡直是一場革命,編程的速度快了,可讀性好了,可維護(hù)性也增強(qiáng)了。 無論是C語言還是匯編語言,都不能直接運(yùn)行,必須通過編譯系統(tǒng)把它們轉(zhuǎn)化為機(jī)器碼,才能在芯片中運(yùn)行。在C編過程中,有一個(gè)中間產(chǎn)物,那就是匯編語言。 接下來,軟件越來越復(fù)雜,客觀上,也要求軟件要發(fā)展。出現(xiàn)C++之后,的確帶來了很多便利。但是,C++運(yùn)用到嵌入式系統(tǒng)中的最大缺點(diǎn)是它的運(yùn)行速度慢。 不經(jīng)常用匯編語言的人,一般很難理解這一點(diǎn)。C++的最大優(yōu)點(diǎn)是他的封裝好,而它的封裝是通過類(class)來實(shí)現(xiàn)的。編譯器在編譯的C++過程中,首先給某個(gè)類分配一個(gè)空間,然后定義一個(gè)指針指向這個(gè)類。而類中的變量的位置都用這個(gè)類的地址加上一個(gè)偏移量來表示,這樣在訪問類中的變量時(shí),就不是直接訪問這個(gè)變量,而是讀取類的指針,然后在加上這個(gè)變量在類中的偏移量,得到變量的地址,然后再通過地址讀取變量。 訪問類中的變量,都是要通過指針,要比直接訪問用更多的指令,所以速度會(huì)降低。 所以,如果不是非常復(fù)雜的系統(tǒng),如果不是用速度很快的硬件,最好不要用C++,還是C語言更加實(shí)際一些。 而和匯編語言比起來,C語言的編程速度,可讀性,可維護(hù)性是不用說了,很多人在要求速度的時(shí)候都會(huì)想到匯編。其實(shí)這并不是一個(gè)明智的選擇。匯編之所以有時(shí)候快,是因?yàn)樗梢越佑眉拇嫫,或者芯片?nèi)部的高速RAM。如果不是因?yàn)檫@兩種情況,就不要盲目的使用匯編,選擇一個(gè)更好的算法往往是明智的選擇。 我最喜歡的永遠(yuǎn)都是C. |