成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

編譯器如何生成匯編

開發(fā) 開發(fā)工具
理解什么是匯編,以及編譯器如何生成它,對于理解 WebAssembly 是很有幫助的。

理解什么是匯編,以及編譯器如何生成它,對于理解 WebAssembly 是很有幫助的。

在上一篇關于 JIT 的文章中,我介紹了和計算機打交道,就像同外星人打交道一樣。

現(xiàn)在來思考一下“外星人”的大腦是如何工作的——機器的“大腦”是如何對我們輸入給它的內容進行分析和理解的。

“大腦”中,有一部分負責思考——處理加法、減法或者邏輯運算。還有其他的部分分別負責短暫記憶和長期記憶的。

這些不同的部分都有自己的名字:

  • 負責思考的部分叫做算數(shù)邏輯單元(ALU)
  • 寄存器提供短暫記憶功能
  • 隨機存取存儲器(RAM)提供長期記憶功能

機器代碼中的語句稱作指令。

那么在指令進入“大腦”以后都發(fā)生了什么呢?它們會被切分為不同的部分傳送到不同的單元進行處理。

“大腦”切分指令通過不同連接線路進行。舉個例子,“大腦”會將指令最開始的 6 比特通過管道送到 ALU 中。而 ALU 會通過 0 和 1 的位置來決定對兩個數(shù)做加法。

這串 01 串就叫做“操作碼”,它告訴了 ALU 要執(zhí)行什么樣的操作。

然后“大腦”會取后面兩個連續(xù)的 3 比特 01 串來確定把哪兩個數(shù)加到一起,而這 3 比特指的是寄存器的地址。

注意看上面機器碼的注釋:“ADD R1 R2”,這對于人類來講很容易理解其含義。這就是匯編,也叫符號機器碼,它使人類也能看懂機器代碼的含義。

可以看到匯編和這臺機器的機器碼之間有直接的映射關系。正是因為如此,擁有不同機器結構的計算機會有不同的匯編系統(tǒng)。如果你有一個機器,它有自己的內部結構,那么它就需要它所獨有的匯編語言。

從上面的分析可以知道我們進行機器碼的翻譯并不是只有一種,不同的機器有不同的機器碼,就像我們人類也說各種各樣的語言一樣,機器也“說”不同的語言。

人類和外星人之間的語言翻譯,可能會從英語、德語或中文翻譯到外星語 A 或者外星語 B。而在程序的世界里,則是從 C、C++ 或者 JAVA 翻譯到 x86 或者 ARM。

你想要從任意一個高級語言翻譯到眾多匯編語言中的一種(依賴機器內部結構),其中一種方式是創(chuàng)建不同的翻譯器來完成各種高級語言到匯編的映射。

這種翻譯的效率實在太低了。為了解決這個問題,大多數(shù)編譯器都會在中間多加一層。它會把高級語言翻譯到一個低層,而這個低層又沒有低到機器碼這個層級。這就是中間代碼( intermediate representation,IR)。

這就是說編譯器會把高級語言翻譯到 IR 語言,而編譯器另外的部分再把 IR 語言編譯成特定目標結構的可執(zhí)行代碼。

重新總結一下:編譯器的前端把高級語言翻譯到 IR,編譯器的后端把 IR 翻譯成目標機器的匯編代碼。

總結

本文介紹了什么是匯編以及編譯器是如何把高級語言翻譯成匯編語言的,在下一篇文章中,我們來介紹 WebAssembly 的工作原理。

責任編輯:張燕妮 來源: 胡子大哈
相關推薦

2019-06-26 18:50:16

匯編器編譯器解釋器

2011-08-24 15:28:02

Lua編譯器解釋器

2010-01-14 15:29:44

C++編譯器

2010-01-27 16:39:48

C++編譯器

2021-06-08 07:48:26

lambda表達式編譯器

2022-08-02 08:11:41

監(jiān)控埋點埋點方式插樁

2010-01-18 10:34:21

C++編譯器

2010-01-21 09:11:38

C++編譯器

2009-08-10 17:12:54

C#編譯器

2013-03-29 10:02:37

編譯器語言編譯開發(fā)

2010-03-23 11:17:16

Python 動態(tài)編譯

2023-11-15 17:58:58

C++代碼

2013-06-13 10:02:36

JavaScriptJavaScript編

2013-10-31 10:44:54

IDE工具

2010-10-20 13:43:37

C++編譯器

2019-08-06 08:20:07

編譯器工具開發(fā)者

2010-02-02 17:08:26

Python靜態(tài)編譯器

2010-02-02 17:08:26

Python靜態(tài)編譯器

2010-03-02 10:55:47

Linux SkyEy

2011-05-18 11:06:25

java編譯器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品一区二区三区久久久 | 欧美日韩国产高清 | av一级毛片| 久久69精品久久久久久久电影好 | 免费成人国产 | 一区二区三区在线 | 一区二区不卡视频 | 丝袜一区二区三区 | 国产福利资源在线 | 中国黄色毛片视频 | 亚洲成av人片在线观看无码 | 国产一区二区久久久 | 国产成人99久久亚洲综合精品 | 性高湖久久久久久久久aaaaa | 久久精品无码一区二区三区 | 狠狠操婷婷 | 欧美日韩在线免费观看 | 久草热视频 | 久久成人免费视频 | 亚洲精品中文字幕在线 | 中文字幕蜜臀av | 欧美一二区 | 国产精品久久亚洲 | 国产成人精品一区二区三区网站观看 | 亚洲高清在线 | 国产蜜臀97一区二区三区 | 日韩色图在线观看 | av片在线观看 | 91素人| 伊人免费在线观看高清 | 亚洲日产精品 | 九九热这里只有精品在线观看 | 亚洲欧洲成人在线 | 麻豆久久精品 | 夜夜爽99久久国产综合精品女不卡 | 欧美一级淫片007 | 中文字幕在线观看视频一区 | 国产午夜精品一区二区三区嫩草 | 亚洲一区二区在线视频 | 日本高清视频在线播放 | 毛片入口|