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