什麼是位元組碼
位元組碼是 JVM 使用的指令集。為了說明這一點,我們來看看這個 Hello World 程式。
public static void main(String[] args){
System.out.println("Hello World");
}
這是編譯成位元組碼時的結果。
public static main([Ljava/lang/String; args)V
getstatic java/lang/System out Ljava/io/PrintStream;
ldc "Hello World"
invokevirtual java/io/PrintStream print(Ljava/lang/String;)V
這背後的邏輯是什麼?
getstatic - 檢索類的靜態欄位的值。在這種情況下, PrintStreamOut
of System 。
ldc - 將常量推入堆疊。在這種情況下,字串 Hello World
invokevirtual - 在堆疊上的已載入引用上呼叫方法,並將結果放在堆疊上。該方法的引數也取自堆疊。
那麼,還有更多的權利嗎?
有 255 個操作碼,但並非所有操作碼都已實現。可以在此處找到包含所有當前操作碼的表: Java 位元組碼指令列表 。
如何編寫/編輯位元組碼?
有多種方法可以編寫和編輯位元組碼。你可以使用編譯器,使用庫或使用程式。
寫作:
用於編輯:
我想了解更多有關位元組碼的資訊!
可能有一個專門針對位元組碼的特定文件頁面。本頁重點介紹使用不同庫和工具修改位元組碼。