2010年11月18日 星期四

bytecode

位元組碼

  1. ByteCode 是給予 JVM 執行的一種虛擬機器碼,也就是給於 JVM 的指令‧
  2. 反過來說,JVM 就是 ByteCode 的解譯程式‧
  3. extends 的原始程式碼 (.java) 經由編譯後產生的類別檔 (.class) 就是 ByteCode 檔案‧
  4. 雖然 JVM 可能因平台而異,但是所有的 JVM 都能執行 extends 的 ByteCode‧


Bytecode直譯器

考量程式執行之前所需要分析的時間,存在了一個介於直譯與編譯之間的可能性。例如,用Emacs Lisp所撰寫的原始碼會被編譯成一種高度壓縮且最佳化的另一種 Lisp 原始碼格式,這就是一種 bytecode,而它並不是機器碼(因此不會被綁死在特定的硬體上)。這個"編譯過的"碼之後會被 bytecode interpreter(使用C寫成的)轉譯。在這種情況下,這個"編譯過的"碼可以被說成是 virtual machine (不是真的硬體,而是一種 bytecode 直譯器)的機器碼。這個方式被用在 Open Firmware 系統所使用的 Forth 程式碼中: 原始程式將會被編譯成 "F code" (一種bytecode),然後被一個特定平台的虛擬機器直譯和執行。

http://zh.wikipedia.org/zh-tw/%E7%9B%B4%E8%AD%AF%E5%99%A8#Bytecode.E7.9B.B4.E8.AD.AF.E5.99.A8




沒有留言: