||This article includes a list of references, related reading or external links, but its sources remain unclear because it lacks inline citations. (April 2015) (Learn how and when to remove this template message)|
O-code is an intermediate language emitted by the BCPL compiler. It is then compiled into the machine code for the computer which is intended to run the program. This method of compiling allowed the original BCPL compiler to be ported to new machines very easily and as a result it became widespread. The idea has since been used by many more recent compilers. However most of them interpret their equivalent of O-code on a virtual machine rather than compiling it as was originally the case.
The O-code machine is a virtual machine that was developed by Martin Richards in the late 1960s to give machine independence to BCPL, the low-level forerunner to C and C++. The concept behind the O-Code machine was to create O-code output (O stands for Object) through the BCPL compiler. The O-code was then either interpreted or, more normally, compiled to machine specific code. This idea was used in later compilers, such as p-code for some Pascal compilers and bytecode generated for the JVM by Java compilers. O-code allowed Richards to separate general compilation issues from machine specific implementation issues when writing the BCPL compiler. Its use in the BCPL compiler made the compiler easy to port and as a result BCPL quickly became available for many machines.
- "The Portability of the BCPL Compiler", Martin Richards, Software - Practice and Experience, Vol. 1, No. 2, pp. 135–146, 1971
- BCPL - the language and its compiler, M. Richards and C. Whitby-Strevens, Cambridge University Press, Cambridge, 1980
- The BCPL Cintcode System and Cintpos User Guide by Martin Richards (672KB pdf format)
- Bootstrapping the BCPL Compiler using INTCODE - definitive document explaining the history of OCODE and INTCODE, by Martin Richards.
|This programming-language-related article is a stub. You can help Wikipedia by expanding it.|