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
A human-readable medium or human-readable format is any encoding of data or information that can be naturally read by humans.
In computing, ''human-readable'' data is often encoded as ASCII or Unicode text, rather than as binary data. In most c ...
source code
In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the w ...
, 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 translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs tha ...
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 uni ...
opcodes 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. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming ...
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, software resources, and provides common services for computer programs.
Time-sharing operating systems schedule tasks for efficient use of the system and may also i ...
dependence by allowing the same code to run
cross-platform
In 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 platforms. Some cross-platform software ...
, on different devices. Bytecode may often be either directly executed on a
virtual machine
In computing, a virtual machine (VM) is the virtualization/ emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized h ...
(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)). This term is applied both generically t ...
, i.e., interpreter), or it may be further compiled into
machine code
In computer programming, machine code is any low-level programming language, consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Each instruction causes the CPU to perform a ve ...
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 machines 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 used in a manner similar to a Turing machine. All the models are Turing equivalent.
Overview
The register machine gets its name fro ...
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 any low-level programming language, consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Each instruction causes the CPU to perform a ve ...
as necessary at
runtime. This makes the virtual machine hardware-specific but does not lose the portability of the bytecode. For example,
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mos ...
and
Smalltalk 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 (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mos ...
,
Raku,
Python
Python may refer to:
Snakes
* Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia
** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia
* Python (mythology), a mythical serpent
Computing
* Python (pro ...
,
PHP
PHP is a general-purpose scripting language geared toward 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 family of two high-level, general-purpose, interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it also referred to its redesigned "sister language", Perl 6, before the latter's name was offic ...
and
Ruby
A 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 ...
1.8 instead work by walking an
abstract syntax tree
In computer science, an abstract syntax tree (AST), or just syntax tree, is a tree representation of the abstract syntactic structure of text (often source code) written in a formal language. Each node of the tree denotes a construct occurr ...
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 (meaning ...
executes in the ActionScript Virtual Machine (AVM), which is part of Flash Player and
AIR
The atmosphere of Earth is the layer of gases, known collectively as air, retained by Earth's gravity that surrounds the planet and forms its planetary atmosphere. The atmosphere of Earth protects life on Earth by creating pressure allowing f ...
. ActionScript code is typically transformed into bytecode format by a
compiler
In computing, a compiler is a computer program that translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily used for programs tha ...
. 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 multimedia software platform used for production of animations, rich web applications, desktop applications, mobile apps, mobile games, and embedded web browser video players. Fla ...
objects
*
BANCStar, originally bytecode for an interface-building tool but used also as a language
*
Berkeley Packet Filter
The Berkeley Packet Filter (BPF) is a technology used in certain computer operating systems for programs that need to, among other things, analyze network traffic. It provides a raw interface to data link layers, permitting raw link-layer packets ...
*Berkeley Pascal
*
Byte Code Engineering Library
The Byte Code Engineering Library (BCEL) is a project sponsored by the Apache Foundation previously under their Jakarta charter to provide a simple API for decomposing, modifying, and recomposing binary Java classes (I.e. bytecode). The project wa ...
*C to
Java virtual machine compilers
*
CLISP
In computing, 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 in ...
implementation of
Common Lisp used to compile only to bytecode for many years; however, now it also supports compiling to native code with the help of
GNU lightning
GNU lightning is a free-software library for generating assembly language code at run-time. Version 2.1.3, released in September 2019, supports backends for SPARC (32-bit), x86 (32- and 64-bit), MIPS, ARM (32- and 64-bit), ia64, HPPA, PowerPC ...
*
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 ...
and Scieneer Common Lisp implementations of
Common Lisp 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, used by
.NET 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 version ...
*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 further ...
, 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 compile ...
*
EiffelStudio
EiffelStudio is a development environment for the Eiffel programming language developed and distributed by Eiffel Software.
EiffelStudio includes a combination of tools integrated under a single user interface: compiler, interpreter, debugger, br ...
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-2 ...
virtual machine used as an intermediate compiling language and as a modern bytecode language
*
Emacs is a text editor with most of its functions implemented by
Emacs Lisp
Emacs Lisp is a dialect of the Lisp programming language used as a scripting language by Emacs (a text editor family most commonly associated with GNU Emacs and XEmacs). It is used for implementing most of the editing functionality built into Em ...
, its built-in dialect of
Lisp. 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 an ...
implementation of
Common Lisp can compile to bytecode or C code
*
Common Lisp 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, 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
X, or x, is the twenty-fourth and third-to-last Letter (alphabet), letter in the Latin alphabet, used in the English alphabet, modern English alphabet, the alphabets of other western European languages and others worldwide. Its English a ...
; #
; ED: B904000000 MOV ECX, 4
; F2: FF7504 PUSH DWORD PTR BP+4; F5: FF6005 JMP DWORD PTR AX+5; 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, open-source blockchain with smart contract functionality. Ether (Abbreviation: ETH; sign: Ξ) is the native cryptocurrency of the platform. Among cryptocurrencies, ether is second only to bitcoin in market capita ...
'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, and Catholic churches. They are not simply artworks; "an icon is a sacred image used in religious devotion". The most ...
and
Unicon
Unicon, previously known as UNICON, is the World Unicycling Convention and Championships sanctioned by the International Unicycling Federation
The International Unicycling Federation (IUF), is the international governing body for the sport of ...
programming languages
*
Infocom 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
In computing, Java bytecode is the bytecode-structured instruction set of the Java virtual machine (JVM), a virtual machine that enables a computer to run programs written in the Java programming language and several other programming langua ...
, which is executed by the
Java virtual machine
**
ASM
**
BCEL
The Byte Code Engineering Library (BCEL) is a project sponsored by the Apache Foundation previously under their Jakarta charter to provide a simple API for decomposing, modifying, and recomposing binary Java classes (I.e. bytecode). The project ...
**
Javassist
Javassist (Java programming assistant) is a Java library providing a means to manipulate the Java bytecode of an application. In this sense Javassist provides the support for structural reflection, i.e. the ability to change the implementation of ...
*
Keiko bytecode
Oberon-2 is an extension of the original Oberon programming language that adds limited reflection and object-oriented programming facilities, open arrays as pointer base types, read-only field export, and reintroduces the FOR loop from Modula-2. ...
used by the
Oberon-2
Oberon-2 is an extension of the original Oberon programming language that adds limited reflection and object-oriented programming facilities, open arrays as pointer base types, read-only field export, and reintroduces the FOR loop from Modula-2. ...
programming language to make it and the
Oberon operating system more portable.
*
KEYB
KEYB (107.9 FM, "108 Key FM") is a radio station
Radio broadcasting is transmission of audio (sound), sometimes with related metadata, by radio waves to radio receivers belonging to a public audience. In terrestrial radio broadcast ...
, 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 ope ...
/
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 (computing), interpreter. Unlike Human-readable code, human-readable source code, bytecodes are compact nume ...
sequences executed by an interpreter inside the resident driver.
*
LLVM IR
*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
Lua or LUA may refer to:
Science and technology
* Lua (programming language)
* Latvia University of Agriculture
* Last universal ancestor, in evolution
Ethnicity and language
* Lua people, of Laos
* Lawa people, of Thailand sometimes referred t ...
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, implementa ...
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 counte ...
is an
esoteric
Western esotericism, also known as esotericism, esoterism, and sometimes the Western mystery tradition, is a term scholars use to categorise a wide range of loosely related ideas and movements that developed within Western society. These ideas ...
machine language
In computer programming, machine code is any low-level programming language, consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Each instruction causes the CPU to perform a very ...
for a ternary virtual machine.
*
Microsoft P-code
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)). This term is applied both generically t ...
used in
Visual C++
Microsoft Visual C++ (MSVC) is a compiler for the C, C++ 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 in both tri ...
and
Visual Basic Visual Basic is a name for a family of programming languages from Microsoft. It may refer to:
* Visual Basic .NET (now simply referred to as "Visual Basic"), the current version of Visual Basic launched in 2002 which runs on .NET
* Visual Basic ( ...
*
Multiplan
Multiplan is spreadsheet program developed by Microsoft and introduced in 1982 as a competitor to VisiCalc.
Multiplan was released first for computers running CP/M; it was developed using a Microsoft proprietary p-code C compiler as part of ...
*
O-code
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 ...
of the
BCPL programming language
*
OCaml 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 (computing), interpreter. Unlike Human-readable code, human-readable source code, bytecodes are compact nume ...
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 (U ...
implementation of the
Pascal language
*
Parrot virtual machine
Parrot was a 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 Parrot bytecode an ...
*
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
Python may refer to:
Snakes
* Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia
** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia
* Python (mythology), a mythical serpent
Computing
* Python (pro ...
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 language
*The
Spin interpreter built into the
Parallax Propeller
microcontroller
*The
SQLite
SQLite (, ) is a 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 belongs to the family of embedded databases. It is the m ...
database engine translates SQL statements into a bespoke byte-code format.
*Apple
SWEET16
SWEET16 is an interpreted byte-code instruction set invented by Steve Wozniak and implemented as part of the Integer BASIC ROM in the Apple II series of computers. It was created because Wozniak needed to manipulate 16-bit pointer (computer prog ...
*
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 platform.
*
Tiny BASIC
Tiny BASIC is a family of Programming language#Dialects, flavors and implementations, dialects of the BASIC programming language that can fit into 4 or fewer kilobyte, KBs of random-access memory, memory. Tiny BASIC was designed in response to th ...
*
Visual FoxPro
Visual FoxPro is a Microsoft data-centric procedural programming language with object-oriented programming (OOP) features.
It was derived from FoxPro (originally known as FoxBASE) which was developed by Fox Software beginning in 1984. Fox Techn ...
compiles to bytecode
*
WebAssembly
WebAssembly (sometimes abbreviated Wasm) defines a portable binary-code format and a corresponding text format for executable programs as well as software interfaces for facilitating interactions between such programs and their host environment ...
*
YARV
YARV (Yet another Ruby VM) is a bytecode interpreter that was developed for the Ruby programming language by Koichi Sasada. The goal of the project was to greatly reduce the execution time of Ruby programs.
Since YARV has become the official R ...
and
Rubinius
Rubinius was an alternative Ruby implementation created by Evan Phoenix. Based loosely on the Smalltalk-80 ''Blue Book'' design, Rubinius sought to
"provide a rich, high-performance environment for running Ruby code."
Goals
Rubinius follows in ...
for
Ruby
A 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 ...
*
ZCODE
ALGOL 68C is an imperative computer programming language, a dialect of ALGOL 68, that was developed by Stephen R. Bourne and Michael Guy to program the Cambridge Algebra System (CAMAL). The initial compiler was written in the Princeton Syntax ...
See also
*
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" ...
*
Platform (computing)
*
Runtime system
In computer programming, a runtime system or runtime environment is a sub-system that exists both 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 t ...
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://developers.google.com/v8/design#mach_code]
[{{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, multinational technology company focusing on Search Engine, search engine technology, online advertising, cloud computing, software, computer software, quantum computing, e-commerce, ar ...
, 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 ope ...
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
KEYB (107.9 FM, "108 Key FM") is a radio station
Radio broadcasting is transmission of audio (sound), sometimes with related metadata, by radio waves to radio receivers belonging to a public audience. In terrestrial radio broadcast ...
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, is a discontinued disk operating system for IBM PC compatibles. It was manufactured and sold by IBM from the early 1980s into the 2000s. Developed by Microsoft, it was also ...
version of the keyboard driver uses some internal procedures that are not recognized by the Microsoft
Microsoft Corporation is an American multinational technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washin ...
driver, so, if possible, you should use the IBM 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]
[{{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
Multiplan is spreadsheet program developed by Microsoft and introduced in 1982 as a competitor to VisiCalc.
Multiplan was released first for computers running CP/M; it was developed using a Microsoft proprietary p-code C compiler as part of ...
wasn't compiled to machine code
In computer programming, machine code is any low-level programming language, consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Each instruction causes the CPU to perform a ve ...
, but to a kind of byte-code which was run by an interpreter, 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 that represents real numbers approximately, using an integer with a fixed precision, called the significand, scaled by an integer exponent of a fixed base. For example, 12.345 can b ...
to calculate on, and an external (standard) format, which was binary coded decimal
In computing and electronic systems, binary-coded decimal (BCD) is a class of binary encodings of decimal numbers where each digit is represented by a fixed number of bits, usually four or eight. Sometimes, special bit patterns are used fo ...
(BCD). The PACK and UNPACK instructions converted between the two.
Virtualization
*