垃圾,还用汇编写单片机程序?
01?
前言
大家好,我是張巧龍,上次寫了 一篇關于C語言的文章:居然還有大學在大一上C語言課?
有同學留言:
突然想起來,單片機和匯編確實也挺有意思。
寫單片機程序到底用匯編還是C,也是一直存在的爭議。
還是先擺出觀點:
如果你只是想用單片機玩玩,做一些簡單DIY應用,那么C語言足夠,但是如果你想在走入嵌入式技術行業,精進原理,那么,用心學學古老但經典的匯編是肯定不會錯的!??/* 請注意加粗字眼*/
02?
匯編能完成C語言完成不了的功能
作為最基本的編程語言之一,匯編語言雖然應用的范圍不算很廣,但重要性卻勿庸置疑,因為它能夠完成許多其它語言所無法完成的功能。
Linux 內核,雖然絕大部分代碼是用? C ?語言編寫的,但仍然不可避免地在某些關鍵地方使用了匯編代碼,其中主要是在 Linux ?的啟動部分。
由于這部分代碼與硬件的關系非常密切,即使是 C語言也會有些力不從心,而匯編語言則能夠很好的揚長避短,最大限度地發揮硬件的性能。
舉例:
Bootloader、啟動代碼都是用匯編寫的。
如果想從事嵌入式技術的同學,Linux下做開發肯定是逃不掉的。
在Linux下的Bootloader種類比較多,都是開放源代碼的,現在比較流行用u-boot,
什么是Bootloader?
簡單的說,BootLoader就是在操作系統運行之前運行的一段小程序。通過這段小程序,可以初始化硬件設備,以便為最終調用操作系統做好準備。
Bootloader的啟動過程又分為兩個階段stage1和stage2。
stage1全部由匯編編寫,它的主要工作是初始化硬件設備、為加載Bootlodader的stage2準備RAM空間、拷貝Bootloader的stage2到RAM空間、設置好堆棧段為stager2的C語言環境做準備。
由于每種嵌入式設備的硬件都不盡相同,所以肯定會存在需要修改Bootloader的,也就是Bootloader移植。
如果不懂匯編,咋移植?
03?
幫助我們更加透徹理解底層
我們在學習編程的時候,其實就是在學高級語言,也就是那些為人類設計的計算機語言。
機器語言是純粹的二進制數據表示的語言,是電腦可以真正識別的語言。
匯編語言和高級語言經過編譯連接最終都會變成機器語言才能被CPU識別和運行。
匯編語言離機器更近,高級語言離人更近。
所以,計算機不理解高級語言,必須通過編譯器轉成二進制代碼,才能運行。學會高級語言,并不等于理解計算機實際的運行步驟。
計算機真正能夠理解的是低級語言,它專門用來控制硬件。匯編語言就是低級語言,直接描述/控制 CPU 的運行。如果你想了解 CPU 到底干了些什么,以及代碼的運行步驟,就一定要學習匯編語言。比如大家學編程的過程中,是否有這種疑問:
指針究竟是怎么運作的?
定義變量時變量的名字和變量值是不是存在相同的地址?
有些場合為什么要定義靜態變量?
想要了解上述的幾個問題,必須了解匯編,這就是匯編的魅力,幫助我們更加了解底層,了解你所寫的代碼。
04?
如何入門學習匯編
1. 清華大學王爽老師的《匯編語言》,現在已經出到第四版了,
2. 小甲魚【匯編入門】《零基礎入門學習匯編語言》
3.?《計算機組成原理》電子科技大學的慕課
也可以看看《計算機組成原理》這本書。
05?
最后
所以,匯編真的沒用嗎?學校教的都過時了?
綜上均為個人觀點,優點歡迎大家繼續補充!
整理了一些學習資料,掃碼加微信備注【匯編】,即可獲取。
-END-
我是張巧龍,一名教電子的大學老師,歡迎關注!
總結
以上是生活随笔為你收集整理的垃圾,还用汇编写单片机程序?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 315全景观察:12大看点一文汇总 消费
- 下一篇: 无视4G/5G信号打电话!中国电信今年将