Bytecode, also known as
p-code (
portable code), is a form of
instruction set designed for efficient execution by a software
interpreter. Unlike
human-readable source code, bytecodes are compact numeric codes, constants, and references (normally numeric addresses) which encode the result of parsing and
semantic analysis of things like type, scope, and nesting depths of program objects. They therefore allow much better performance than direct interpretation of source code. The name bytecode stems from instruction sets which have one-
byte opcodes followed by optional parameters. Intermediate representations such as bytecode may be output by
programming language implementations to ease
interpretation, or it may be used to reduce hardware and
operating system dependence by allowing the same code to run on different platforms. Bytecode may often be either directly executed on a
virtual machine (i.e. interpreter), or it may be further compiled into
machine code for better performance.