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