資料介紹
要閱讀本文,不需要太高深的編譯原理知識,甚至不需要編譯相關的知識。但是本文也不是面向對電腦一無所知的讀者的,你至少要知道:
1. 不管是exe可執行文件還是Linux下的程序,都是一些二進制代碼,我們稱之為機器語言。這些代碼的執行和系統以及 CPU都有關。
2. 大部分情況下,編譯器是一種將高級語言翻譯成機器語言的程序。而任何程序本身也是一些機器語言的代碼。
3. 無論是高級語言、匯編語言還是機器語言,實際上都是等價的,唯一有區別的是,越高級的語言寫起來越容易(所以我們傾向于盡量多書寫高級語言代碼);同時,機器語言是可以直接運行的。如果你覺得上面三條可以理解或者可以理解一部分,那么請繼續閱讀。另外,本文中提到的無論是編譯的過程還是語言的分類甚至是一些例子,都可以看做是一個簡化的模型。實際上,很少有一個exe程序就可以運行的編譯器,現代的編譯器都是十分復雜的。不過,考慮這些簡化模型對我們沒有任何壞處,它們和實際情況相差并不很大
首先我來詳細解釋一下高級語言和機器語言。語言的所謂“高級”,實際上界定不是那么明確。不過我們可以確定的是:C++、Java、Python之流比匯編語言更高級,而匯編語言比機器語言更高級。這里提到一個匯編語言和機器語言的區分。可能有些讀者不明白這兩個概念的區別,實際上很簡單,匯編語言是我們會看到的那些MOV、JMP等命令組成的語言,而機器語言則純粹是是各種01串。我想沒有人會愿意寫一個機器語言的程序——實際上,我們學校的計算機組成實驗都是用Verilog HDL這種高級語言來完成的,而嵌入式原理實驗也是用一種匯編語言完成的;即使是做處理器和單片機,也不會有人愿意去寫機器語言,畢竟一大堆01串太坑爹了。試想,讓你用 C++寫一個從1輸出到100的程序,幾行代碼就可以搞定;而匯編語言則可能需要幾十行;機器語言呢,Oh my god,一大堆 01000101110110101011111001……,看都看不懂,還寫啥啊。
但是上面也提到了,機器語言和高級語言的區別是,它可以直接運行。比如exe程序,實際上它內部存儲的就是一些機器語言的代碼,機器可以直接閱讀這些代碼并在處理器中運行它們(這里說的不是完全準確,比如.NET編譯出的exe程序實際上是一段中間代碼,由CLR解釋成機器代碼才能運行——不過這可以暫且忽略,就當作我說的是一個簡化的模型)。當然程序的運行是依賴機器架構和系統的,不然Wine什么的也就沒有用了(什么是Wine?WINE = WINE Is Not an Emulator!有趣的名稱遞歸定義還有很多,不過與本文無關,請自行Google)。而實際上,是機器架構不同還是系統不同,并不是我們考慮的問題。我們考慮的問題只是,一段代碼在A機器和X系統下能否運行,換到B機器和Y系統下又能否運行。就算在A機器和X系統下能運行,如果換成了A機器和Y系統之后不能運行了,那對于我們這也可以看做兩臺不同的機器(也就是說,A機器和Y系統實際上就可以看做一個新的機器B)。所以之后的描述中,我們不考慮操作系統的情況,而是只考慮機器,我們編號為a、b 等,而它們上面可以運行的機器語言我們編號為A、B等。
- OpenCV3.1教程之編譯的詳細資料說明 1次下載
- 主流的C語言編譯器詳細介紹
- 如何使用C語言實現軟復位詳細資料說明
- C語言編譯器常見的預編譯指令詳細資料說明
- 主流C語言編譯器的詳細資料介紹
- 華為的C語言編程規范的詳細資料說明 31次下載
- C語言教程之Makefile基礎的詳細資料說明 12次下載
- C語言程序設計教程之編譯預處理的詳細資料說明 2次下載
- 如何在AIX中安裝C語言編譯器 3次下載
- C語言編譯器MINGW的使用說明詳細資料概述 15次下載
- C語言編譯器中有哪些錯誤信息詳細中英文對比 13次下載
- 如何使用VS2013做C語言編譯器的創建方法詳細資料說明 8次下載
- 面向對象與圖形編程的詳細資料和實例說明 11次下載
- 如何使用編譯器顧問提高芯片的性能詳細資料概述 6次下載
- C語言編譯器 50次下載
- SEGGER編譯器優化和安全技術介紹 支持最新C和C++語言 1500次閱讀
- 領域編譯器發展的前世今生 1748次閱讀
- 交叉編譯器安裝教程 3557次閱讀
- 編譯器把代碼轉化為機器碼的過程 6942次閱讀
- VScode編譯器如何配置C/C++編譯環境 5659次閱讀
- 第一個C語言編譯器的來源 2531次閱讀
- 鴻蒙系統用什么語言 華為方舟編譯器原理圖分析 6498次閱讀
- 如何選擇PIC單片機的C編譯器 5429次閱讀
- 深入編程語言和編譯器是怎樣工作的 4370次閱讀
- 編譯器原理到底是怎樣的帶你簡單的了解編譯器原理 1.1w次閱讀
- PLC常用基本環節梯形圖和詳細文字說明詳細資料概述 1w次閱讀
- verilog編譯指令_verilog編譯器指示語句(數字IC) 1.5w次閱讀
- 用于linux系統下編程的編譯器,掌握gcc的基本用法 5687次閱讀
- 編譯器是如何工作的_編譯器的工作過程詳解 1.6w次閱讀
- 編譯器跟編輯器有什么區別 3w次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 651單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 751單片機大棚環境控制器仿真程序
- 1.10 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多