2012-06-14 29 views
3

這個問題主要與PHP有關,因爲恕我直言操作碼主要在PHP上下文中提到。根據這一description,這裏有PHP代碼的轉換過程分爲操作碼:機器碼和操作碼有什麼區別?

PHP文本 - >掃描/解析 - >結果=令牌 - >編譯>的結果=操作碼在這裏

幾個問題:

1)操作碼只是機器碼的一部分,機器碼是否由操作碼組成? 2)在Wamp服務器環境下思考,PHP模塊負責什麼?該模塊只是將PHP代碼轉換爲令牌的PHP解釋器,還是編譯器將令牌編譯爲在硬件(處理器)上執行的操作碼?

回答

3

這個問題主要與PHP有關,因爲恕我直言操作碼主要在PHP上下文中提到。

其實Java是更受歡迎的是針對字節/碼

1)是操作碼的機器代碼只是一個部分,它的機器代碼由操作碼的?

是的,但是這個操作碼是機器相關的。 javas或phps字節碼的趣味在於,它獨立於機器,並運行在特定於平臺的虛擬機中。

2)在Wamp服務器的背景下思考,PHP模塊負責什麼?

沒有模塊,它是核心的一部分。

Lexer => Tokenizer => Compiler 

是模塊是剛剛PHP解釋誰變換PHP代碼到令牌或者是它也是一個編譯器編譯誰進入令牌碼是在硬件(處理器)執行?

不完全是。生成的字節碼與機器無關(名爲「Zend-opcode」),無法直接在硬件上運行。最後一步是將此字節碼轉換爲與機器相關的操作碼。

+2

我不會說字節碼被轉換爲與機器相關的操作碼。而是由運行在機器本身之上的虛擬機來解釋。 – Ben

2
  • 機器碼 - 代碼這是準備要由機器處理器
  • 操作碼執行的 - 代碼由解釋

操作碼是由PHP內核執行被執行,它的內部特徵。 爲了加快php腳本,有一個模塊PHP Accelerator,緩存編譯的字節碼,以便下次直接由處理器執行