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中执行。