資料介紹
要閱讀本文,不需要太高深的編譯原理知識,甚至不需要編譯相關的知識。但是本文也不是面向對電腦一無所知的讀者的,你至少要知道:
1. 不管是exe可執行文件還是Linux下的程序,都是一些二進制代碼,我們稱之為機器語言。這些代碼的執行和系統以及 CPU都有關。
2. 大部分情況下,編譯器是一種將高級語言翻譯成機器語言的程序。而任何程序本身也是一些機器語言的代碼。
3. 無論是高級語言、匯編語言還是機器語言,實際上都是等價的,唯一有區別的是,越高級的語言寫起來越容易(所以我們傾向于盡量多書寫高級語言代碼);同時,機器語言是可以直接運行的。如果你覺得上面三條可以理解或者可以理解一部分,那么請繼續閱讀。另外,本文中提到的無論是編譯的過程還是語言的分類甚至是一些例子,都可以看做是一個簡化的模型。實際上,很少有一個exe程序就可以運行的編譯器,現代的編譯器都是十分復雜的。不過,考慮這些簡化模型對我們沒有任何壞處,它們和實際情況相差并不很大

首先我來詳細解釋一下高級語言和機器語言。語言的所謂“高級”,實際上界定不是那么明確。不過我們可以確定的是:C++、Java、Python之流比匯編語言更高級,而匯編語言比機器語言更高級。這里提到一個匯編語言和機器語言的區分??赡苡行┳x者不明白這兩個概念的區別,實際上很簡單,匯編語言是我們會看到的那些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語言編程規范的詳細資料說明 32次下載
- C語言教程之Makefile基礎的詳細資料說明 12次下載
- C語言程序設計教程之編譯預處理的詳細資料說明 2次下載
- 如何在AIX中安裝C語言編譯器 3次下載
- C語言編譯器MINGW的使用說明詳細資料概述 15次下載
- C語言編譯器中有哪些錯誤信息詳細中英文對比 13次下載
- 如何使用VS2013做C語言編譯器的創建方法詳細資料說明 8次下載
- 面向對象與圖形編程的詳細資料和實例說明 11次下載
- 如何使用編譯器顧問提高芯片的性能詳細資料概述 6次下載
- C語言編譯器 51次下載
- SEGGER編譯器優化和安全技術介紹 支持最新C和C++語言 2.4k次閱讀
- 領域編譯器發展的前世今生 2.7k次閱讀
- 交叉編譯器安裝教程 4.6k次閱讀
- 編譯器把代碼轉化為機器碼的過程 7.9k次閱讀
- VScode編譯器如何配置C/C++編譯環境 7.5k次閱讀
- 第一個C語言編譯器的來源 3.1k次閱讀
- 鴻蒙系統用什么語言 華為方舟編譯器原理圖分析 7.4k次閱讀
- 如何選擇PIC單片機的C編譯器 5.9k次閱讀
- 深入編程語言和編譯器是怎樣工作的 5k次閱讀
- 編譯器原理到底是怎樣的帶你簡單的了解編譯器原理 1.2w次閱讀
- PLC常用基本環節梯形圖和詳細文字說明詳細資料概述 1.1w次閱讀
- verilog編譯指令_verilog編譯器指示語句(數字IC) 1.6w次閱讀
- 用于linux系統下編程的編譯器,掌握gcc的基本用法 6.1k次閱讀
- 編譯器是如何工作的_編譯器的工作過程詳解 1.8w次閱讀
- 編譯器跟編輯器有什么區別 3.3w次閱讀
下載排行
本周
- 1美的電磁爐電路原理圖資料
- 4.39 MB | 16次下載 | 10 積分
- 2反激式開關電源設計解析
- 0.89 MB | 2次下載 | 5 積分
- 3簡易光伏控制器原理圖資料
- 0.07 MB | 1次下載 | 5 積分
- 4TPS23755數據手冊
- 0.07 MB | 次下載 | 免費
- 536伏,10兆赫茲低噪聲雙運算放大器COS5532 技術手冊
- 0.41 MB | 次下載 | 免費
- 6LM5176 55V 寬輸入電壓同步4開關降壓/升壓控制器技術手冊
- 2.40 MB | 次下載 | 免費
- 7MCU模塊原理圖資料
- 0.37 MB | 次下載 | 1 積分
- 8LoRa1121 FCC&CE認證 多頻段LoRa無線通訊模塊規格書
- 997.05 KB | 次下載 | 免費
本月
- 1美的電磁爐電路原理圖資料
- 4.39 MB | 16次下載 | 10 積分
- 2冷柜-電氣控制系統講解
- 13.68 MB | 7次下載 | 10 積分
- 3SDFM 激光測距模塊模組手冊
- 0.54 MB | 7次下載 | 免費
- 4直流電路的組成和基本定律
- 1.67 MB | 4次下載 | 免費
- 5SW6238V ACCC 三 PD 四口多協議移動電源 SOC規格書
- 0.59 MB | 4次下載 | 1 積分
- 6安川A1000變頻器中文版說明書
- 20.16 MB | 3次下載 | 3 積分
- 7IP6742_datasheet_100V8A 同步 BUCK 控制器
- 2.16 MB | 3次下載 | 免費
- 8PAW3395DM-T6QU:光學游戲導航芯片手冊
- 1.26 MB | 2次下載 | 10 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233094次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191448次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183360次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81605次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73829次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發燒友App





創作
發文章
發帖
提問
發資料
發視頻
上傳資料賺積分
評論