c语言编译机器码,[转载]单片机C语言到机器码的全过程
我們平時做單片機編程,最常使用的是C語言和匯編語言兩種,但是最終下載到單片機內部的,卻是HEX文件里的二進制機器代碼,很多同學不懂這個過程是如何轉換的。
我們的程序開發環境,比如KEIL和偉福等等,都是可以使用C或者匯編語言來編程的。對于C語言來講,一旦我們編程完畢,就可以點擊編譯,編譯的過程,實際上首先通過
“編譯器”將C語言翻譯成匯編語言,再通過“匯編器”將匯編語言轉化成機器代碼,最終可以下載到單片機中的是機器代碼。
細心的同學能夠看出,我寫的“C到匯編”,是“翻譯”,"匯編到機器代碼",是“轉化”。對于編譯器來講,將C轉化成匯編的時候,不是一一對應的關系,也就是說幾行C代碼,可能翻譯成幾十行。而匯編語言和機器代碼,從某種意義來講,是一個東西,兩者是一一對應的關系。因此,如果我們直接使用匯編語言寫的程序,就可以直接跳過“編譯器”,通過匯編器將我們寫的匯編語言轉化成機器代碼。
我們早期的程序員,大多使用匯編代碼。通常程序員自己寫的匯編代碼,比編譯器轉化的匯編代碼效率要高,執行速度快,占用空間也小。隨著高級語言的誕生,CPU速度的提升和程序存儲空間的不斷增大,我們開始使用高級語言C來編寫程序代碼。C語言開發的優勢在于開發方便,移植容易,可維護性強,有類似的項目,直接移植過來,不需要重復開發了。
但是這并不意味著匯編代碼被淘汰了,匯編語言的意義,更重要在于可以通過匯編語言,可以清楚的理解CPU內部的結構及其程序運行模式。熟練掌握匯編語言對于今后學習深入的嵌入式操作系統非常有好處。
因此我建議:作為初學者在學習單片機技術的過程中,如果想要上手快,迅速學會做點簡單的東西,可以直接用C來編程。如果你想深入學習軟硬件開發,將來深入的硬件底層學習,成為這個行業的高手,基礎打牢固點,建議先用匯編做兩年,對于你今后的成長非常有用的。
你的師兄們沒說錯,你應該用C,簡單來說:
1. C上手快,因為比匯編更符合我們的思維方式對吧
2. C比匯編容易駕馭,一旦程序開始變得復雜了,C程序相對容易維護的優勢會非常明顯
3. 標準C是“跨片子”的,匯編指令則根據不同的片子可能會不一樣
4.
現代的C編譯器非常智能,你手寫的匯編代碼很難超過它生成的(除非,你是非常NB的老手),因為編譯器一般比你更“懂”CPU的結構,更知道應該生成什么樣的指令。
5.你團隊(或是身邊的人,如師兄)的人都用C的時候,你想問別人問題,你應該遷就他們,而不是他們遷就你。
所以,不需要迷茫啦,看上面你就知道,其實C不難掌握,你擔心什么呢,花幾個星期時間就好啦。
當然小宋老師說的很對。你有時間的話,深入地掌握一種匯編也是有益無害的,多一種知識就能多一份解決問題的能力。學匯編能讓你理解你用的片子,同樣會提高你對C的理解的。對提高開發能力有益無害。
至于說,深不深入學51,則是仁者見仁的問題,要換我,我會建議你,深入掌握一種51核的MCU,將常用的片內外設的用法(包括電路連接和編程)都弄懂,就好了。
花時候學類似的片子,不如學算法、學數學、學電路、學點數字信號處理,學點操作系統知識,HIAHIA
總之就是不建議你把時間花在有量變沒質變的事情上
學了51,再往前,你可以花時間弄RTOS,使用帶操作系統ARM開發,或是學習DSP芯片的開發,或是學FPGA,總之,學習那些能給你帶來新思維方式的技能,而不是總停留在一個層面上跑圈圈。
總結
以上是生活随笔為你收集整理的c语言编译机器码,[转载]单片机C语言到机器码的全过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux网站爬取,Kali下httra
- 下一篇: visual c 语言参考手册pdf,