位元組碼(bytecode)和機器程式碼(machine code)的區別

每臺計算機都與一組由該計算機自己識別和執行的指令相關聯。指令儲存為二進位制位模式,即1和0的字串。因此,任何一臺特定的計算機都只能用其微處理器的機器程式碼語言執行指令。程式可以儲存在磁碟上,然後載入到計算機的記憶體中,然後由CPU逐個提取指令並執行。以前,程式設計師習慣用處理器的本機機器程式碼編寫程式,但整個過程既耗時又昂貴,機器程式碼對人類讀者毫無用處。...

每臺計算機都與一組由該計算機自己識別和執行的指令相關聯。指令儲存為二進位制位模式,即1和0的字串。因此,任何一臺特定的計算機都只能用其微處理器的機器程式碼語言執行指令。程式可以儲存在磁碟上,然後載入到計算機的記憶體中,然後由CPU逐個提取指令並執行。以前,程式設計師習慣用處理器的本機機器程式碼編寫程式,但整個過程既耗時又昂貴,機器程式碼對人類讀者毫無用處。

為了剋服這些問題,人們發明瞭組合語言。在這種情況下,資料可以用十進位制數而不是二進位制數來表示。但是將組合語言程式轉換成機器程式碼需要一個程式。這個程式叫做彙編程式。彙編程式使程式具有可讀性,程式設計不易出錯,但無法剋服可移植性問題。彙編程式中的缺陷導致了高階程式語言的發展,這使得程式設計更加高效,但它們又不能在計算機上執行。然後使用編譯器實現這一目的。為了使同樣的編譯程式在任何計算機上執行,程式被編譯成位元組碼。

什麼是位元組碼(bytecode)?

位元組碼是一組經過高度最佳化的指令,通常被稱為虛擬機器,由程式執行。它是從原始碼編譯成低階程式碼的中間程式碼,用於軟體直譯器的高效執行。必須認識到位元組碼不是硬體處理器使用的機器碼。虛擬機器將位元組碼轉換成計算機處理器能夠理解的特定機器指令。實時編譯器可以用來加速位元組碼的執行。在Java中,位元組碼是Java虛擬機器(JVM)的指令集。JVM是一個提供執行Java程式所需的執行時環境的程式。程式不能執行,除非有一個JVM可用於您將在其上執行的相應硬體和作業系統平臺。JVM是位元組碼的直譯器。Java位元組碼不是特定於平臺的,因此它可以提供給任何平臺。

什麼是機器程式碼(machine code)?

機器程式碼是由與特定計算機相關聯的本機指令組成的計算機程式。它是計算機的基本語言,由計算機中央處理器(CPU)可以直接理解的二進位制或十六進位制指令組成的機器語言指令。每個計算機處理器都與一組機器程式碼指令相關聯,它可以理解並執行這些指令。所有的程式在執行之前都必須轉換成機器語言。編譯器將計算機程式設計師編寫的程式轉換為包含0和1的機器程式碼,然後作業系統以機器程式碼執行應用程式。它只是儲存在最低階別記憶體中的CPU指令列表。編譯器將高階語言如C、C++和java轉換為中間語言(如位元組碼),然後將其解釋為機器語言。

位元組碼和機器碼的區別

定義

–位元組碼是從原始碼編譯成低階程式碼的中間程式碼,設計用於在虛擬機器而不是中央處理器(CPU)上執行。它是一組高度最佳化的指令,可以識別為組成處理器的機器程式碼或內部計算機CPU的機器程式碼。另一方面,機器程式碼是一種由本機指令組成的計算機程式,本機指令由0和1組成,可由計算機的CPU直接執行。

功能

–位元組碼類似於執行時系統解釋的機器程式碼,以便程式碼可以在系統上執行。虛擬機器將位元組碼轉換成計算機處理器能夠理解的特定機器指令。位元組碼的功能是成為一種可以由虛擬機器的直譯器高效執行的格式。機器程式碼是計算機的基本語言,用二進位制或十六進位制編寫,計算機的CPU可以理解。它是所有程式執行前必須轉換成的語言。

平臺

–位元組碼與平臺無關,因為它可以在任何平臺上使用虛擬機器執行。位元組碼的格式總是相同的,不管它是在什麼型別的機器上建立的。一個程式可以被編譯成位元組碼併傳送到任何一臺安裝了執行時的機器上。另一方面,機器程式碼不是獨立於平臺的,這意味著它不能在任何具有相同作業系統的平臺上執行,因為它是由與特定計算機相關聯的本機指令組成的。

位元組碼與機器碼:比較圖

總結

位元組碼不是任何特定計算機的機器碼,可以在計算機體系結構中移植。它類似於由執行時系統解釋的機器程式碼,以便程式碼可以在系統上執行。虛擬機器將位元組碼轉換成計算機處理器能夠理解的特定機器指令。機器程式碼是一種計算機程式,它可以由計算機硬體直接執行而不需要軟體。與位元組碼不同的是,位元組碼是獨立於平臺的,機器碼不能在同一作業系統的任何平臺上執行。

  • 發表於 2021-06-26 16:35
  • 閱讀 ( 14 )
  • 分類:科技

你可能感興趣的文章

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

...Java程式轉換為機器可理解的格式,Java程式首先被轉換成位元組碼。然後位元組碼被轉換成機器碼。為了編譯和執行Java程式,程式設計師應該設定路徑和類路徑。即使這兩個詞看起來相似,也有區別。本文討論了path和classpath之...

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

原始碼(source code)和位元組碼(bytecode)的區別

...器編寫程式。這些程式被稱為原始碼。 什麼是位元組碼(bytecode)? 當程式語言從原始碼轉換為機器程式碼時,一些程式語言將原始碼轉換為稱為位元組碼的中間程式碼。Java是使用位元組碼的主要程式語言之一。將原始碼轉換為...

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

awt公司(awt)和擺動(swing)的區別

...物件設計和開發軟體。當Java程式被編譯時,它被轉換成位元組碼。該位元組碼由Java虛擬機器(JVM)在任何平臺。因此,它是一種程式語言,程式設計師可以一次編寫並在任何平臺上執行。Java可用於開發各種應用程式,如桌面、...

  • 發佈於 2020-10-19 16:56
  • 閲讀 ( 49 )

perl公司(perl)和python(python)的區別

...將原始碼轉換成機器語言。在Perl中,程式首先被轉換成位元組碼,然後位元組碼被轉換成機器指令。因此,Perl語言與C語言和C++語言相比是比較慢的語言。 執行Perl程式有不同的方法。可以從命令列以互動模式開始編碼。程式設...

  • 發佈於 2020-10-19 17:38
  • 閲讀 ( 47 )

取決於機器(machine dependent)和機器無關程式碼最佳化(machine independent code optimization)的區別

...碼最佳化就是其中之一。有兩種最佳化技術,如機器依賴和機器無關的程式碼最佳化。機器依賴程式碼最佳化與機器無關程式碼最佳化的關鍵區別在於,將機器依賴最佳化應用於物件程式碼,而中間程式碼採用機器無關程式碼最...

  • 發佈於 2020-10-20 02:55
  • 閲讀 ( 50 )

rpc(rpc)和rmi公司(rmi)的區別

...遞。當效能被認為比RPC慢時,由於涉及Java虛擬機器上的位元組碼,RMI對程式設計師非常友好,並且非常容易使用。 RMI在Java中使用了內建的安全機制,還提供了一個支援使用非TCP自定義傳輸層協議的套接字工廠。此外,RMI提供了...

  • 發佈於 2020-10-25 11:28
  • 閲讀 ( 57 )

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

...而Java原始檔(.Java檔案)首先被編譯(使用javac命令)為位元組碼(一種包含在.class檔案中的目的碼),然後使用Java直譯器(使用Java命令)進行解釋。當軟體應用程式被分發時,它們通常不包括原始檔。但是,如果應用程式是...

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

為什麼java虛擬機器可以幫助程式碼更好地執行

...va程式是用java編譯器編寫和編譯的。生成的目的碼(稱為位元組碼)可以傳輸到執行在不同硬體上的不同主機作業系統,並且應該可以正常執行。 ...

  • 發佈於 2021-03-13 07:13
  • 閲讀 ( 55 )

一個尺寸不適合所有人:為什麼軟體不能普遍相容

...系統上執行的可執行和可連結格式(ELF)檔案必須以特定位元組指定檔案的某些屬性,如下圖所示。 ...

  • 發佈於 2021-03-13 08:34
  • 閲讀 ( 54 )

為什麼有些程式語言比其他語言快?

... 位元組碼:一個小小的妥協 ...

  • 發佈於 2021-03-13 15:07
  • 閲讀 ( 48 )
fvh5967827
fvh5967827

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦