彙編程式(assembler)和編譯程式(compiler)的區別

彙編程式和編譯器的區別在於編譯器獲取原始碼並將其轉換為彙編程式碼,而彙編程式則獲取編譯器生成的彙編程式碼並將其轉換為機器程式碼。...

主要區別

彙編程式和編譯器的區別在於編譯器獲取原始碼並將其轉換為彙編程式碼,而彙編程式則獲取編譯器生成的彙編程式碼並將其轉換為機器程式碼。

彙編程式(assembler) vs. 編譯器(compiler)

在程式執行中起著最重要作用的兩個術語是編譯器和彙編程式。編譯器的工作是獲取經過預處理的原始碼並將其轉換為彙編程式碼。然後彙編程式的工作就是從編譯器中獲取彙編程式碼並將其轉換為機器程式碼。如果我們討論主要的區別,那麼彙編程式和編譯器的主要區別是編譯器獲取原始碼並將其轉換為彙編程式碼,而彙編程式使用編譯器生成的彙編程式碼並將其轉換為機器程式碼。用源語言編寫的程式由編譯器讀取。編譯器是一個計算機程式,它將原始碼轉換為組合語言,並將組合語言程式碼傳送給彙編程式。編譯器的型別有單通道編譯器、多通道編譯器、載入和執行編譯器以及除錯和最佳化編譯器。彙編程式獲取編譯器生成的彙編程式碼並將其轉換為機器程式碼。彙編程式的主要工作是將資料作為輸入,形成可重定位的機器程式碼。有編譯器可以執行彙編程式的任務並直接生成機器程式碼,但這並不意味著我們不能研究彙編程式的功能。彙編程式碼和機器程式碼有很多不同。所有這些不同型別的編譯器執行不同的功能,並且根據工作的不同而不同。彙編程式碼是機器程式碼的助記符版本,而機器程式碼使用二進位制程式碼來表示記憶體地址的操作。在彙編程式中有兩個過程,第一個過程標識彙編程式碼並將程式碼儲存在符號表中,第二個過程再次掃描程式碼並對程式碼執行操作。編譯有兩個步驟,一個步驟是分析部分,在這一部分中,原始碼被分成幾部分並執行中間表示。在合成部分,目的碼形成中間表示。編譯器的階段包括詞法分析器、語法分析器、語義分析器、中間程式碼生成、程式碼最佳化器、程式碼生成器、符號表和錯誤處理程式。

比較圖

彙編程式編譯器
彙編程式是一種計算機程式,它將編譯器生成的彙編程式碼轉換成機器程式碼編譯器是一個計算機程式,它將原始碼轉換為彙編程式碼
輸入
彙編程式輸入組合語言程式碼編譯器輸入原始碼
階段
彙編程式的相位為第一階段和第二階段。編譯器的階段包括詞彙分析器、語法分析器、語義分析器、生成的中間程式碼、程式碼最佳化器、程式碼生成器、符號表和錯誤處理程式
產出
彙編程式的輸出是二進位制程式碼編譯器的輸出是程式碼的助記版本。

什麼是編輯者(a compiler)?

用源語言編寫的程式由編譯器讀取。編譯器是一個計算機程式,它將原始碼轉換為組合語言,並將組合語言程式碼傳送給彙編程式。編譯器的型別有單通道編譯器、多通道編譯器、載入和執行編譯器以及除錯和最佳化編譯器。所有這些不同型別的編譯器執行不同的功能,並且根據工作的不同而不同。編譯有兩個步驟,一個步驟是分析部分,在這一部分中,原始碼被分成幾部分並執行中間表示。在合成部分,目的碼形成中間表示。編譯器的階段包括詞法分析器、語法分析器、語義分析器、中間程式碼生成、程式碼最佳化器、程式碼生成器、符號表和錯誤處理程式。

彙編程式和編譯器不是相同的程序,但是它們執行的工作與生成源程式的物件程式碼並將其交給連結器所做的工作相同。連結器的主要過程是在連結器完成此工作後,獲取物件程式碼並生成程式的可執行程式碼,並將程式碼分配給載入程式。有一些內建的庫和標頭檔案,它們使用高階語言。在內建庫中定義了一些庫函式。這些函式由連結器連結到庫函式。如果找不到特定函式的庫函式,則會通知編譯器。當有一個大程式時,它被分成更小的程式,即模組。物件模組是在編譯或組裝這些模組時生成的。連結器必須將整個程式合併在一起。連結器有兩種型別:一種是連結編輯器,它生成重新定位的可執行模組,另一種是一種動態連結器,將外部模組連結到載入模組生成為止。必須執行的程式存在於主記憶體中。載入程式,在作業系統中載入可執行檔案。載入程式將記憶體空間分配給主記憶體中的可執行模組。有三種類型的裝載機:絕對裝載機、可重定位裝載機和動態執行時載入。這三種裝載機有不同的載入方式,即絕對載入法、可重定位載入法和動態執行時載入法。絕對載入程式將程式的可執行檔案載入到相同的主記憶體位置。在絕對裝載程式中,程式設計師必須知道分配。重新定位載入程式編譯或組裝實際的主記憶體地址。動態執行時載入程式,絕對記憶體程式是在執行指令時生成的。

什麼是彙編程式(assembler)?

彙編程式獲取編譯器生成的彙編程式碼並將其轉換為機器程式碼。彙編程式的主要工作是將資料作為輸入,形成可重定位的機器程式碼。有編譯器可以執行彙編程式的任務並直接生成機器程式碼,但這並不意味著我們不能研究彙編程式的功能。彙編程式碼和機器程式碼有很多不同。彙編程式碼是機器程式碼的助記符版本,而機器程式碼使用二進位制程式碼來表示記憶體地址的操作。在彙編程式中有兩個過程是預成型的,第一個過程標識彙編程式碼並將程式碼儲存在符號表中,然後第二個過程再次掃描程式碼並對程式碼執行操作。

主要區別

  1. 彙編程式是一種將編譯器生成的彙編程式碼轉換成機器程式碼的計算機程式,而編譯器則是一種獲取原始碼並將其轉換為彙編程式碼的計算機程式。
  2. 彙編程式輸入組合語言程式碼,而編譯器輸入原始碼。
  3. 彙編程式的階段是第一階段和第二階段,編譯器的階段是詞法分析器、語法分析器、語義分析器、生成的中間程式碼、程式碼最佳化器、程式碼生成器、符號表和錯誤處理程式。
  4. 彙編程式的輸出是二進位制程式碼,而編譯器的輸出是程式碼的助記符版本。

對比影片

  • 發表於 2020-08-14 06:57
  • 閱讀 ( 17 )
  • 分類:電腦

你可能感興趣的文章

語法錯誤(syntax error)和邏輯錯誤(logical error)的區別

鍵區別-語法錯誤與邏輯錯誤 程式設計時,可能會出現錯誤。錯誤是程式的意外輸出。這些錯誤會影響程式的正確執行。因此,有必要消除所有錯誤。錯誤也被稱為bug。識別錯誤並修復錯誤的過程稱為除錯。每種程式語言都有...

  • 發佈於 2020-10-19 09:24
  • 閲讀 ( 66 )

編譯時間(compile time)和執行時(runtime)的區別

關鍵區別-編譯時與執行時 大多數程式都是用高階程式語言編寫的。這些程式語言的語法與英語相似。高階語言很容易被人類理解,但計算機卻無法理解。因此,編寫的程式或原始碼應轉換成機器可理解的格式。它被稱為機器...

  • 發佈於 2020-10-19 10:25
  • 閲讀 ( 60 )

路徑(path)和類路徑(classpath)的區別

...件(javadocumentation)、Java標頭檔案生成器(javah)、Java反彙編程式(javap)和Java偵錯程式(jdb)等工具。要編譯和執行Java程式,必須有Java編譯器和Java工具。這些是可執行檔案。 圖01:路徑和類路徑 編譯Java程式時,將此呼叫作...

  • 發佈於 2020-10-19 11:04
  • 閲讀 ( 51 )

原始碼(source code)和目的碼(object code)的區別

...的集合,而目的碼是機器語言中的語句序列,是編譯器或彙編程式轉換原始碼後的輸出。 目錄 1. 概述和主要區別 2. 什麼是原始碼 3. 什麼是目的碼 4.原始碼和目的碼的相似性 5. 並行比較-原始碼與目的碼的表格形式 6. 摘要 什麼...

  • 發佈於 2020-10-19 18:56
  • 閲讀 ( 191 )

機器語言(machine language)和組合語言(assembly language)的區別

...語言轉換成機器語言的方法依賴於CPU。 什麼是組合語言(assembly language)? 組合語言是介於高階程式設計語言和機器語言之間的中間語言。它比機器語言高一級。組合語言比機器語言更容易理解,但比高階程式語言更難理解。這種...

  • 發佈於 2020-10-20 02:53
  • 閲讀 ( 87 )

源程式(source program)和目標程式(object program)的區別

...譯源程式後建立的機器可執行程式。它包含低階語言,如彙編或機器程式碼。因此,目標程式是不可讀的。機器可以理解。 總結 - 源程式(source program) vs. 目標程式(object program) 源程式和目標程式的區別在於,源程式是程式設計...

  • 發佈於 2020-10-26 14:27
  • 閲讀 ( 51 )

如何編譯自己的linux核心

...要組成部分,如果不是最重要的話。作業系統負責讓你的程式執行,允許它們訪問你的硬體。然而,它實際上是執行所有這些任務的核心。 ...

  • 發佈於 2021-03-15 10:33
  • 閲讀 ( 47 )

有了彙編,任何人都可以為開源軟體做貢獻,並實際獲得報酬

...領域之外,這些策略仍然是相對利基的。舊金山一家名為Assembly的初創公司正試圖改變這一切,它改進了開源模型,使之能夠輕鬆地將編碼之外的學科結合起來,同時也包含了一個共享的利潤動機。今天,該公司宣佈了一輪290萬...

  • 發佈於 2021-04-27 22:38
  • 閲讀 ( 39 )

iphoto相簿(iphoto album)和智慧相簿(smart album)的區別

...流行應用軟體,介面非常直觀,是一款使用者友好的應用程式,使使用者可以輕鬆編輯和整理儲存的數字影象和照片。雖然它很容易使用,但它提供的功能不如用於照片編輯和操作的專用軟體那麼多。iPhoto應用程式最常用的功能...

  • 發佈於 2021-06-23 14:04
  • 閲讀 ( 37 )

jdbc語句(jdbc statement)和編製報表(preparedstatement)的區別

...問,尤其是儲存在關聯式資料庫中的資料。它使用用Java程式語言編寫的JDBC驅動程式將任何Java應用程式與資料庫連線起來。它允許我們連線到所有公司資料庫,即使在異構環境中也是如此。 Statement和PreparedStatement是表示與資料庫...

  • 發佈於 2021-06-25 10:39
  • 閲讀 ( 61 )