Was sind Bytecode und Opcode?
Was ist der Unterschied?
Haben alle interpretierten Sprachen ähnliche Codes?
Mein Verständnis ist:
Bytecode und Opcode sind beide Zwischencodes
Interpretierte Sprachen übersetzen den Quellcode in Zwischencode, der dann von der virtuellen Maschine (z. B. JVM, Zend) interpretiert und ausgeführt wird
opcode 就是 Operation Code。
在 java 中使用的 bytecode 也是一种 opcode,因为每个操作码都是用一个字节,所以叫字节码(其实也有多字节的)。
每一个字节用来表示一个指令,理论上可以有 256 个操作码。
我们平时经常看到的
iadd
(将两个整数相加)、dadd
(将两个浮点数相加)并不是字节码,而是助记符。很多解释型语言都没有类似的码。
bytecode和opcode都是都是一种中间码,不存在可比性,java编译成中间码bytecode然后在jvm中执行,,php编译成中间码opcode,在ZendVM中执行。