84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
bytecode 字節碼,和 opcode 操作碼各是什麼?
有什麼差別?
解釋型語言都有類似的碼嗎?
我的理解是:
bytecode 和 opcode 都是中間碼
#解釋型語言都會將原始碼翻譯成中間碼,再由虛擬機器(例如 jvm, zend)解釋執行
走同样的路,发现不同的人生
opcode 就是 Operation Code。
在 java 中使用的 bytecode 也是一種 opcode,因為每個操作碼都是用一個字節,所以叫字節碼(其實也有多字節的)。
每一個位元組用來表示一個指令,理論上可以有 256 個操作碼。
我們平常常看到的 iadd(將兩個整數相加)、dadd(將兩個浮點數相加)並不是字節碼,而是助記符。
iadd
dadd
很多解釋型語言都沒有類似的碼。
bytecode和opcode都是一種中間碼,不存在可比性,java編譯成中間碼bytecode然後在jvm中執行,,php編譯成中間碼opcode,在ZendVM中執行。
opcode 就是 Operation Code。
在 java 中使用的 bytecode 也是一種 opcode,因為每個操作碼都是用一個字節,所以叫字節碼(其實也有多字節的)。
每一個位元組用來表示一個指令,理論上可以有 256 個操作碼。
我們平常常看到的
iadd
(將兩個整數相加)、dadd
(將兩個浮點數相加)並不是字節碼,而是助記符。很多解釋型語言都沒有類似的碼。
bytecode和opcode都是一種中間碼,不存在可比性,java編譯成中間碼bytecode然後在jvm中執行,,php編譯成中間碼opcode,在ZendVM中執行。