日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
編譯器如何生成匯編

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

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),南平網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:南平等地區(qū)。南平做網(wǎng)站價(jià)格咨詢:13518219792

在上一篇關(guān)于 JIT 的文章中,我介紹了和計(jì)算機(jī)打交道,就像同外星人打交道一樣。

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

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

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

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

機(jī)器代碼中的語句稱作指令。

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

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

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

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

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

可以看到匯編和這臺(tái)機(jī)器的機(jī)器碼之間有直接的映射關(guān)系。正是因?yàn)槿绱?,擁有不同機(jī)器結(jié)構(gòu)的計(jì)算機(jī)會(huì)有不同的匯編系統(tǒng)。如果你有一個(gè)機(jī)器,它有自己的內(nèi)部結(jié)構(gòu),那么它就需要它所獨(dú)有的匯編語言。

從上面的分析可以知道我們進(jìn)行機(jī)器碼的翻譯并不是只有一種,不同的機(jī)器有不同的機(jī)器碼,就像我們?nèi)祟愐舱f各種各樣的語言一樣,機(jī)器也“說”不同的語言。

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

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

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

這就是說編譯器會(huì)把高級(jí)語言翻譯到 IR 語言,而編譯器另外的部分再把 IR 語言編譯成特定目標(biāo)結(jié)構(gòu)的可執(zhí)行代碼。

重新總結(jié)一下:編譯器的前端把高級(jí)語言翻譯到 IR,編譯器的后端把 IR 翻譯成目標(biāo)機(jī)器的匯編代碼。

總結(jié)

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


文章名稱:編譯器如何生成匯編
當(dāng)前URL:http://www.dlmjj.cn/article/dheigcp.html