Bytecode (also called portable code or p-code) is a form of
instruction set
In computer science, an instruction set architecture (ISA) is an abstract model that generally defines how software controls the CPU in a computer or a family of computers. A device or program that executes instructions described by that ISA, s ...
designed for efficient execution by a software
interpreter
Interpreting is translation from a spoken or signed language into another language, usually in real time to facilitate live communication. It is distinguished from the translation of a written text, which can be more deliberative and make use o ...
. Unlike
human-readable
In computing, a human-readable medium or human-readable format is any encoding of data or information that can be naturally read by humans, resulting in human-readable data. It is often encoded as ASCII or Unicode text, rather than as binary da ...
source code
In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer.
Since a computer, at base, only ...
, bytecodes are compact numeric codes, constants, and references (normally numeric addresses) that encode the result of
compiler
In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
parsing and performing
semantic analysis of things like type, scope, and nesting depths of program objects.
The name ''bytecode'' stems from instruction sets that have one-
byte
The byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable un ...
opcode
In computing, an opcode (abbreviated from operation code) is an enumerated value that specifies the operation to be performed. Opcodes are employed in hardware devices such as arithmetic logic units (ALUs), central processing units (CPUs), and ...
s followed by optional parameters.
Intermediate representation
An intermediate representation (IR) is the data structure or code used internally by a compiler or virtual machine to represent source code. An IR is designed to be conducive to further processing, such as optimization and translation. A "good" ...
s such as bytecode may be output by
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
implementations to ease
interpretation, or it may be used to reduce hardware and
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
dependence by allowing the same code to run
cross-platform
Within computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several Computing platform, computing platforms. Some ...
, on different devices. Bytecode may often be either directly executed on a
virtual machine
In computing, a virtual machine (VM) is the virtualization or emulator, emulation of a computer system. Virtual machines are based on computer architectures and provide the functionality of a physical computer. Their implementations may involve ...
(a
p-code machine
In computer programming, a P-code machine (portable code machine) is a virtual machine designed to execute ''P-code,'' the assembly language or machine code of a hypothetical central processing unit (CPU). The term ''P-code machine'' is applied g ...
, i.e., interpreter), or it may be further compiled into
machine code
In computer programming, machine code is computer code consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). For conventional binary computers, machine code is the binaryOn nonb ...
for better performance.
Since bytecode instructions are processed by software, they may be arbitrarily complex, but are nonetheless often akin to traditional hardware instructions: virtual
stack machine
In computer science, computer engineering and programming language implementations, a stack machine is a computer processor or a Virtual machine#Process virtual machines, process virtual machine in which the primary interaction is moving short- ...
s are the most common, but virtual
register machine
In mathematical logic and theoretical computer science, a register machine is a generic class of abstract machines, analogous to a Turing machine and thus Turing complete. Unlike a Turing machine that uses a tape and head, a register machine u ...
s have been built also.
Different parts may often be stored in separate files, similar to
object modules, but dynamically loaded during execution.
Execution
A bytecode program may be executed by parsing and ''directly'' executing the instructions, one at a time. This kind of ''bytecode interpreter'' is very portable. Some systems, called dynamic translators, or ''
just-in-time'' (JIT) compilers, translate bytecode into
machine code
In computer programming, machine code is computer code consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). For conventional binary computers, machine code is the binaryOn nonb ...
as necessary at
runtime. This makes the virtual machine hardware-specific but does not lose the portability of the bytecode. For example,
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
and
Smalltalk
Smalltalk is a purely object oriented programming language (OOP) that was originally created in the 1970s for educational use, specifically for constructionist learning, but later found use in business. It was created at Xerox PARC by Learni ...
code is typically stored in bytecode format, which is typically then JIT compiled to translate the bytecode to machine code before execution. This introduces a delay before a program is run, when the bytecode is compiled to native machine code, but improves execution speed considerably compared to interpreting source code directly, normally by around an order of magnitude (10x).
Because of its performance advantage, today many language implementations execute a program in two phases, first compiling the source code into bytecode, and then passing the bytecode to the virtual machine. There are bytecode based virtual machines of this sort for
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
,
Raku,
Python,
PHP
PHP is a general-purpose scripting language geared towards web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by the PHP Group. ...
,
Tcl
TCL or Tcl or TCLs may refer to:
Business
* TCL Technology, a Chinese consumer electronics and appliance company
** TCL Electronics, a subsidiary of TCL Technology
* Texas Collegiate League, a collegiate baseball league
* Trade Centre Limited ...
,
mawk and
Forth (however, Forth is seldom compiled via bytecodes in this way, and its virtual machine is more generic instead). The implementation of
Perl
Perl is a high-level, general-purpose, interpreted, dynamic programming language. Though Perl is not officially an acronym, there are various backronyms in use, including "Practical Extraction and Reporting Language".
Perl was developed ...
and
Ruby
Ruby is a pinkish-red-to-blood-red-colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sapph ...
1.8 instead work by walking an
abstract syntax tree
An abstract syntax tree (AST) is a data structure used in computer science to represent the structure of a program or code snippet. It is a tree representation of the abstract syntactic structure of text (often source code) written in a formal ...
representation derived from the source code.
More recently, the authors of
V8 and
Dart have challenged the notion that intermediate bytecode is needed for fast and efficient VM implementation. Both of these language implementations currently do direct JIT compiling from source code to machine code with no bytecode intermediary.
Examples
*
ActionScript
ActionScript is an object-oriented programming language originally developed by Macromedia Inc. (later acquired by Adobe). It is influenced by HyperTalk, the scripting language for HyperCard. It is now an implementation of ECMAScript (mean ...
executes in the ActionScript Virtual Machine (AVM), which is part of Flash Player and
AIR
An atmosphere () is a layer of gases that envelop an astronomical object, held in place by the gravity of the object. A planet retains an atmosphere when the gravity is great and the temperature of the atmosphere is low. A stellar atmosph ...
. ActionScript code is typically transformed into bytecode format by a
compiler
In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
. Examples of compilers include one built into Adobe Flash Professional and one built into Adobe Flash Builder and available in the
Adobe Flex SDK.
*
Adobe Flash
Adobe Flash (formerly Macromedia Flash and FutureSplash) is a mostly discontinuedAlthough it is discontinued by Adobe Inc., for the Chinese market it is developed by Zhongcheng and for the international enterprise market it is developed by Ha ...
objects
*
BANCStar, originally bytecode for an interface-building tool but used also as a language
*
Berkeley Packet Filter
The Berkeley Packet Filter (BPF; also BSD Packet Filter, classic BPF or cBPF) is a network tap and packet filter which permits computer network packets to be captured and filtered at the operating system level. It provides a raw interface to da ...
*
EBPF
eBPF is a technology that can run programs in a privileged context such as the operating system kernel. It is the successor to the Berkeley Packet Filter (BPF, with the "e" originally meaning "extended") filtering mechanism in Linux and is al ...
*Berkeley Pascal
*
Byte Code Engineering Library
*C to
Java virtual machine
A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally descr ...
compilers
*
CLISP
CLISP is an implementation of the programming language Common Lisp originally developed by Bruno Haible and Michael Stoll for the Atari ST. Today it supports the Unix and Microsoft Windows operating systems.
CLISP includes an interpreter, a bytec ...
implementation of
Common Lisp
Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ''ANSI INCITS 226-1994 (S2018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperli ...
used to compile only to bytecode for many years; however, now it also supports compiling to native code with the help of
GNU lightning
*
CMUCL
CMUCL is a free Common Lisp implementation, originally developed at Carnegie Mellon University.
CMUCL runs on most Unix-like platforms, including Linux and BSD; there is an experimental Windows port as well. Steel Bank Common Lisp is derived fr ...
and Scieneer Common Lisp implementations of
Common Lisp
Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ''ANSI INCITS 226-1994 (S2018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperli ...
can compile either to native code or to bytecode, which is far more compact
*
Common Intermediate Language
Common Intermediate Language (CIL), formerly called Microsoft Intermediate Language (MSIL) or Intermediate Language (IL), is the intermediate language binary instruction set defined within the Common Language Infrastructure (CLI) specification. ...
executed by
Common Language Runtime
The Common Language Runtime (CLR), the virtual machine component of Microsoft .NET Framework, manages the execution of .NET programs. Just-in-time compilation converts the managed code (compiled intermediate language code) into machine instr ...
, used by
.NET
The .NET platform (pronounced as "''dot net"'') is a free and open-source, managed code, managed computer software framework for Microsoft Windows, Windows, Linux, and macOS operating systems. The project is mainly developed by Microsoft emplo ...
languages such as
C#
*
Dalvik bytecode, designed for the
Android platform, is executed by the
Dalvik virtual machine
Dalvik is a discontinued process virtual machine (VM) in the Android operating system that executes applications written for Android. (Dalvik bytecode format is still used as a distribution format, but no longer at runtime in newer Android versi ...
*Dis bytecode, designed for the
Inferno (operating system)
Inferno is a distributed operating system started at Bell Labs and now developed and maintained by Vita Nuova Holdings as free software under the MIT License. Inferno was based on the experience gained with Plan 9 from Bell Labs, and the furth ...
, is executed by the
Dis virtual machine
Limbo is a programming language for writing distributed systems and is the language used to write applications for the Inferno operating system. It was designed at Bell Labs by Sean Dorward, Phil Winterbottom, and Rob Pike.
The Limbo compi ...
*
EiffelStudio for the
Eiffel programming language
*EM, the
Amsterdam Compiler Kit
The Amsterdam Compiler Kit (ACK) is a retargetable compiler suite and toolchain written by Andrew Tanenbaum and Ceriel Jacobs, since 2005 maintained by David Given. It has frontends for the following programming languages: C, Pascal, Modula ...
virtual machine used as an intermediate compiling language and as a modern bytecode language
*
Emacs
Emacs (), originally named EMACS (an acronym for "Editor Macros"), is a family of text editors that are characterized by their extensibility. The manual for the most widely used variant, GNU Emacs, describes it as "the extensible, customizable, s ...
is a text editor with most of its functions implemented by
Emacs Lisp
Emacs Lisp is a Lisp dialect made for Emacs.
It is used for implementing most of the editing functionality built into Emacs, the remainder being written in C, as is the Lisp interpreter.
Emacs Lisp code is used to modify, extend and customi ...
, its built-in dialect of
Lisp
Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized Polish notation#Explanation, prefix notation.
Originally specified in the late 1950s, ...
. These features are compiled into bytecode. This architecture allows users to customize the editor with a high level language, which after compiling into bytecode yields reasonable performance.
*
Embeddable Common Lisp
Embeddable Common Lisp (ECL) is a small implementation of the ANSI Common Lisp programming language that can be used stand-alone or embedded in extant applications written in C. It creates OS-native executables and libraries (i.e. Executable and ...
implementation of
Common Lisp
Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ''ANSI INCITS 226-1994 (S2018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperli ...
can compile to bytecode or C code
*
Common Lisp
Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ''ANSI INCITS 226-1994 (S2018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperli ...
provides a
disassemble
function which prints to the standard output the underlying code of a specified function. The result is implementation-dependent and may or may not resolve to bytecode. Its inspection can be utilized for debugging and optimization purposes.
Steel Bank Common Lisp
Steel Bank Common Lisp (SBCL) is a free and open-source Common Lisp implementation that features a high-performance native compiler, Unicode support and threading. It is open source software, with a permissive license. In addition to the compile ...
, for instance, produces:
:
(disassemble '(lambda (x) (print x)))
; disassembly for (LAMBDA (X))
; 2436F6DF: 850500000F22 TEST EAX, x220F0000 ; no-arg-parsing entry point
; E5: 8BD6 MOV EDX, ESI
; E7: 8B05A8F63624 MOV EAX, x2436F6A8 ; #
; ED: B904000000 MOV ECX, 4
; F2: FF7504 PUSH DWORD PTR BP+4; F5: FF6005 JMP DWORD PTR AX+5 AX-5 or AX5 may refer to:
* ''AX-5: Orion'' (videogame), a 1982 game; see List of Project EGG games, List of ''Project EGG'' games
* Axiom Mission 5, future spaceflight
* Aeolus AX5, Aeolus ''AX5'' compact crossover utility vehicle
* Aisin ''AX5'' ...
; F8: CC0A BREAK 10 ; error trap
; FA: 02 BYTE #X02
; FB: 18 BYTE #X18 ; INVALID-ARG-COUNT-ERROR
; FC: 4F BYTE #X4F ; ECX
*Ericsson implementation of
Erlang uses BEAM bytecodes
*
Ethereum
Ethereum is a decentralized blockchain with smart contract functionality. Ether (abbreviation: ETH) is the native cryptocurrency of the platform. Among cryptocurrencies, ether is second only to bitcoin in market capitalization. It is open-s ...
's Virtual Machine (EVM) is the runtime environment, using its own bytecode, for transaction execution in Ethereum (smart contracts).
*
Icon
An icon () is a religious work of art, most commonly a painting, in the cultures of the Eastern Orthodox, Oriental Orthodox, Catholic Church, Catholic, and Lutheranism, Lutheran churches. The most common subjects include Jesus, Mary, mother of ...
and
Unicon
Unicon, previously known as UNICON, is the World unicycle, Unicycling Convention and Championships sanctioned by the International Unicycling Federation (IUF).
The IUF sanctions a biennial world unicycling convention and competition, the major e ...
programming languages
*
Infocom
Infocom, Inc., was an American software company based in Cambridge, Massachusetts, that produced numerous works of interactive fiction. They also produced a business application, a relational database called ''Cornerstone (software), Cornerston ...
used the
Z-machine
The Z-machine is a virtual machine that was developed by Joel Berez and Marc Blank in 1979 and used by Infocom for its text adventure games. Infocom compiled game code to files containing Z-machine instructions (called story files or Z-code ...
to make its software applications more portable
*
Java bytecode
Java bytecode is the instruction set of the Java virtual machine (JVM), the language to which Java and other JVM-compatible source code is compiled. Each instruction is represented by a single byte, hence the name bytecode, making it a compact ...
, which is executed by the
Java virtual machine
A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally descr ...
**
ASM
**
BCEL
**Javassist
*
Keiko bytecode used by the
Oberon-2
Oberon-2 is an extension of the original Oberon programming language that adds limited reflective programming (reflection) and object-oriented programming facilities, open arrays as pointer base types, read-only field export, and reintroduces th ...
programming language to make it and the
Oberon operating system more portable.
*
KEYB, the
MS-DOS
MS-DOS ( ; acronym for Microsoft Disk Operating System, also known as Microsoft DOS) is an operating system for x86-based personal computers mostly developed by Microsoft. Collectively, MS-DOS, its rebranding as IBM PC DOS, and a few op ...
/
PC DOS keyboard driver with its resource file
KEYBOARD.SYS containing layout information and short
p-code
Bytecode (also called portable code or p-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 (normal ...
sequences executed by an interpreter inside the resident driver.
*
LLVM IR
LLVM, also called LLVM Core, is a target-independent optimizer and code generator. It can be used to develop a frontend for any programming language and a backend for any instruction set architecture. LLVM is designed around a language-indepen ...
*LSL, a scripting language used in virtual worlds compiles into bytecode running on a virtual machine. Second Life has the original Mono version, Inworldz developed the Phlox version.
*
Lua language uses a register-based bytecode virtual machine
*m-code of the
MATLAB
MATLAB (an abbreviation of "MATrix LABoratory") is a proprietary multi-paradigm programming language and numeric computing environment developed by MathWorks. MATLAB allows matrix manipulations, plotting of functions and data, implementat ...
language
*
Malbolge
Malbolge () is a public domain esoteric programming language invented by Ben Olmstead in 1998, named after the eighth circle of hell in Dante's '' Inferno'', the Malebolge. It was specifically designed to be almost impossible to use, via a cou ...
is an
esoteric
Western esotericism, also known as the Western mystery tradition, is a wide range of loosely related ideas and movements that developed within Western society. These ideas and currents are united since they are largely distinct both from orthod ...
machine language
In computer programming, machine code is computer code consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). For conventional binary computers, machine code is the binaryOn nonb ...
for a ternary virtual machine.
*
Microsoft P-code used in
Visual C++
Microsoft Visual C++ (MSVC) is a compiler for the C, C++, C++/CLI and C++/CX programming languages by Microsoft. MSVC is proprietary software; it was originally a standalone product but later became a part of Visual Studio and made available ...
and
Visual Basic Visual Basic is a name for a family of programming languages from Microsoft. It may refer to:
* Visual Basic (.NET), the current version of Visual Basic launched in 2002 which runs on .NET
* Visual Basic (classic), the original Visual Basic suppo ...
*
Multiplan
*
O-code of the
BCPL
BCPL ("Basic Combined Programming Language") is a procedural, imperative, and structured programming language. Originally intended for writing compilers for other languages, BCPL is no longer in common use. However, its influence is still f ...
programming language
*
OCaml
OCaml ( , formerly Objective Caml) is a General-purpose programming language, general-purpose, High-level programming language, high-level, Comparison of multi-paradigm programming languages, multi-paradigm programming language which extends the ...
language optionally compiles to a compact bytecode form
*
p-code
Bytecode (also called portable code or p-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 (normal ...
of
UCSD Pascal
UCSD Pascal is a Pascal programming language system that runs on the UCSD p-System, a portable, highly machine-independent operating system. UCSD Pascal was first released in 1977. It was developed at the University of California, San Diego (UC ...
implementation of the
Pascal language
*
Parrot virtual machine
Parrot is a discontinued register-based process virtual machine designed to run dynamic languages efficiently. It is possible to compile Parrot assembly language and Parrot intermediate representation (PIR, an intermediate language) to Parr ...
*
Pick BASIC also referred to as Data BASIC or
MultiValue BASIC
*The
R environment for statistical computing offers a bytecode compiler through the compiler package, now standard with R version 2.13.0. It is possible to compile this version of R so that the base and recommended packages exploit this.
*
Pyramid 2000 adventure game
*
Python scripts are being compiled on execution to Python's bytecode language, and the compiled files (.pyc) are cached inside the script's folder
:Compiled code can be analysed and investigated using a built-in tool for debugging the low-level bytecode. The tool can be initialized from the shell, for example:
:
>>> import dis # "dis" - Disassembler of Python byte code into mnemonics.
>>> dis.dis('print("Hello, World!")')
1 0 LOAD_NAME 0 (print)
2 LOAD_CONST 0 ('Hello, World!')
4 CALL_FUNCTION 1
6 RETURN_VALUE
*
Scheme 48 implementation of Scheme using bytecode interpreter
*Bytecodes of many implementations of the
Smalltalk
Smalltalk is a purely object oriented programming language (OOP) that was originally created in the 1970s for educational use, specifically for constructionist learning, but later found use in business. It was created at Xerox PARC by Learni ...
language
*The
Spin interpreter built into the
Parallax
Parallax is a displacement or difference in the apparent position of an object viewed along two different sightline, lines of sight and is measured by the angle or half-angle of inclination between those two lines. Due to perspective (graphica ...
Propeller
microcontroller
A microcontroller (MC, uC, or μC) or microcontroller unit (MCU) is a small computer on a single integrated circuit. A microcontroller contains one or more CPUs (processor cores) along with memory and programmable input/output peripherals. Pro ...
*The
SQLite
SQLite ( "S-Q-L-ite", "sequel-ite") is a free and open-source relational database engine written in the C programming language. It is not a standalone app; rather, it is a library that software developers embed in their apps. As such, it ...
database engine translates SQL statements into a bespoke byte-code format.
*Apple
SWEET16
*
Tcl
TCL or Tcl or TCLs may refer to:
Business
* TCL Technology, a Chinese consumer electronics and appliance company
** TCL Electronics, a subsidiary of TCL Technology
* Texas Collegiate League, a collegiate baseball league
* Trade Centre Limited ...
*
TIMI is used by compilers on the
IBM i
IBM i (the ''i'' standing for ''integrated'') is an operating system developed by IBM for IBM Power Systems. It was originally released in 1988 as OS/400, as the sole operating system of the IBM AS/400 line of systems. It was renamed to i5/OS in 2 ...
platform.
*
Tiny BASIC
Tiny BASIC is a family of dialects of the BASIC programming language that can fit into 4 or fewer KBs of memory. Tiny BASIC was designed by Dennis Allison and the People's Computer Company (PCC) in response to the open letter published by Bi ...
*
Visual FoxPro
Visual FoxPro is a programming language that was developed by Microsoft. It is a data-centric and procedural programming language with object-oriented programming (OOP) features.
It was derived from FoxPro (which was itself descended from FoxB ...
compiles to bytecode
*
WebAssembly
WebAssembly (Wasm) defines a portable binary-code format and a corresponding text format for executable programs as well as software interfaces for facilitating communication between such programs and their host environment.
The main goal of ...
*
YARV and
Rubinius
Rubinius is an alternative Ruby implementation created by Evan Phoenix. Based loosely on the Smalltalk-80 ''Blue Book'' design, Rubinius seeks to
"provide a rich, high-performance environment for running Ruby code."
Goals
Rubinius follows in t ...
for
Ruby
Ruby is a pinkish-red-to-blood-red-colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sapph ...
*
ZCODE
*
Zend Engine
The Zend Engine is a compiler and runtime environment for the PHP scripting language and consists of the Zend Virtual Machine, which is composed of the Zend Compiler and the Zend Executor, that compiles and executes the PHP code. It was origi ...
opcodes for
PHP
PHP is a general-purpose scripting language geared towards web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by the PHP Group. ...
See also
*
Computing platform
A computing platform, digital platform, or software platform is the infrastructure on which software is executed. While the individual components of a computing platform may be obfuscated under layers of abstraction, the ''summation of the requi ...
*
Intermediate representation
An intermediate representation (IR) is the data structure or code used internally by a compiler or virtual machine to represent source code. An IR is designed to be conducive to further processing, such as optimization and translation. A "good" ...
*
Runtime system
In computer programming, a runtime system or runtime environment is a sub-system that exists in the computer where a program is created, as well as in the computers where the program is intended to be run. The name comes from the compile time ...
Notes
References
{{reflist, refs=
[{{cite web , url=http://www.jucs.org/jucs_11_7/the_implementation_of_lua/jucs_11_7_1159_1176_defigueiredo.html , title=The Implementation of Lua 5.0 (NB. This involves a register-based virtual machine.)]
[{{Cite web , url=http://source.android.com/tech/dalvik/dalvik-bytecode.html , title=Dalvik VM , url-status=dead , archive-url=https://web.archive.org/web/20130518021154/http://source.android.com/tech/dalvik/dalvik-bytecode.html , archive-date=2013-05-18 , access-date=2012-10-29 (NB. This VM is register based.)]
[{{cite web , title=Byte Code Vs Machine Code , website=www.allaboutcomputing.net , url=http://www.allaboutcomputing.net/2014/07/byte-code-vs-machine-code.html , access-date=2017-10-23]
[{{cite web , title=Dynamic Machine Code Generation , publisher=Google Inc. , url=https://chromium.googlesource.com/external/github.com/v8/v8.wiki/+/eb80fb157da30e8c838e758f178de674e47648ed/Design-Elements.md , access-date=2024-12-01 , archive-date=2017-03-05 , archive-url=https://web.archive.org/web/20170305155607/https://github.com/v8/v8/wiki/Design%20Elements , url-status=live ]
[{{Cite web , url=http://www.dartlang.org/articles/why-not-bytecode/ , title=Why Not a Bytecode VM? , last=Loitsch , first=Florian , publisher=]Google
Google LLC (, ) is an American multinational corporation and technology company focusing on online advertising, search engine technology, cloud computing, computer software, quantum computing, e-commerce, consumer electronics, and artificial ...
, url-status=dead , archive-url=https://web.archive.org/web/20130512215811/http://www.dartlang.org/articles/why-not-bytecode/ , archive-date=2013-05-12
[{{Cite web, url=https://2ality.com/2012/01/bytecode-myth.html, title=JavaScript myth: JavaScript needs a standard bytecode, website=2ality.com]
[{{Cite web , url=http://www.cs.arizona.edu/icon/ftp/doc/ib1up.pdf , title=The Implementation of the Icon Programming Language , url-status=dead , archive-url=https://web.archive.org/web/20160305123148/http://www.cs.arizona.edu/icon/ftp/doc/ib1up.pdf , archive-date=5 March 2016 , access-date=9 September 2011]
[{{Cite web, url=http://unicon.sourceforge.net/book/ib.pdf , archive-url=https://ghostarchive.org/archive/20221009/http://unicon.sourceforge.net/book/ib.pdf , archive-date=2022-10-09 , url-status=live, title=The Implementation of Icon and Unicon a Compendium]
[{{cite newsgroup , title=KEYBOARD.SYS internal structure , newsgroup=comp.os.msdos.programmer , author-first=Matthias R. , author-last=Paul , date=2001-12-30 , url=https://groups.google.com/d/msg/comp.os.msdos.programmer/l_IuSHsBDWQ/887rJF9IYmMJ , access-date=2016-09-17 , url-status=live , archive-url=https://archive.today/20170909082257/https://groups.google.com/forum/%23!msg/comp.os.msdos.programmer/l_IuSHsBDWQ/887rJF9IYmMJ , archive-date=2017-09-09 , quote= ��In fact, the format is basically the same in ]MS-DOS
MS-DOS ( ; acronym for Microsoft Disk Operating System, also known as Microsoft DOS) is an operating system for x86-based personal computers mostly developed by Microsoft. Collectively, MS-DOS, its rebranding as IBM PC DOS, and a few op ...
3.3 - 8.0, PC DOS 3.3 - 2000, including Russian, Lithuanian, Chinese and Japanese issues, as well as in Windows NT, 2000, and XP �� There are minor differences and incompatibilities, but the general format has not changed over the years. ��Some of the data entries contain normal tables ��However, most entries contain ''executable code'' interpreted by some kind of p-code interpreter at * runtime*, including conditional branches and the like. This is why the KEYB driver has such a huge memory footprint compared to table-driven keyboard drivers which can be done in 3 - 4 Kb getting the same level of function except for the interpreter. ��}
[{{Cite web , url=http://www.columbia.edu/~em36/wpdos/eurodos.html , title=How to Display the Euro in MS-DOS and Windows DOS , last=Mendelson , first=Edward , author-link=Edward Mendelson , date=2001-07-20 , at=Display the euro symbol in full-screen MS-DOS (including Windows 95 or Windows 98 full-screen DOS) , url-status=live , archive-url=https://web.archive.org/web/20160917201248/http://www.columbia.edu/~em36/wpdos/eurodos.html , archive-date=2016-09-17 , access-date=2016-09-17 , quote= ��Matthias .Paul ��warns that the ]IBM PC DOS
IBM PC DOS (an acronym for IBM Personal Computer Disk Operating System),Formally known as "The IBM Personal Computer DOS" from versions 1.0 through 3.30, as reported in those versions' respective COMMAND.COM outputs also known as PC DOS or IBM ...
version of the keyboard driver uses some internal procedures that are not recognized by the Microsoft
Microsoft Corporation is an American multinational corporation and technology company, technology conglomerate headquartered in Redmond, Washington. Founded in 1975, the company became influential in the History of personal computers#The ear ...
driver, so, if possible, you should use the IBM
International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
versions of both KEYB.COM and KEYBOARD.SYS instead of mixing Microsoft and IBM versions ��} (NB. What is meant by "procedures" here are some additional bytecodes in the IBM KEYBOARD.SYS file not supported by the Microsoft version of the KEYB driver.)
[{{cite web , title=United States Patent 6,973,644 , url=http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=6973644.PN.&OS=PN/6973644&RS=PN/6973644 , access-date=2009-05-21 , archive-date=2017-03-05 , archive-url=https://web.archive.org/web/20170305001731/http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=6973644.PN.&OS=PN/6973644&RS=PN/6973644 , url-status=dead ]
[{{Cite web, url=https://cran.r-project.org/doc/manuals/R-admin.html#Byte_002dcompiler, title=R Installation and Administration, website=cran.r-project.org]
[{{cite web , title=The SQLite Bytecode Engine , url=https://www.sqlite.org/opcode.html , access-date=29 August 2016 , archive-url=https://web.archive.org/web/20170414044139/http://sqlite.org/opcode.html , archive-date=14 April 2017 , url-status=dead ]
[{{cite book , title=Microsoft C Pcode Specifications , page=13 , quote= Multiplan wasn't compiled to ]machine code
In computer programming, machine code is computer code consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). For conventional binary computers, machine code is the binaryOn nonb ...
, but to a kind of byte-code which was run by an interpreter
Interpreting is translation from a spoken or signed language into another language, usually in real time to facilitate live communication. It is distinguished from the translation of a written text, which can be more deliberative and make use o ...
, in order to make Multiplan portable across the widely varying hardware of the time. This byte-code distinguished between the machine-specific floating point format
In computing, floating-point arithmetic (FP) is arithmetic on subsets of real numbers formed by a ''significand'' (a signed sequence of a fixed number of digits in some base) multiplied by an integer power of that base.
Numbers of this form ...
to calculate on, and an external (standard) format, which was binary coded decimal (BCD). The PACK and UNPACK instructions converted between the two.
Virtualization
*