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