Content deleted Content added
Stevebroshar (talk | contribs) |
Stevebroshar (talk | contribs) →First sentence is wrong: new section |
||
Line 139:
:I only have a suggestion: look for material coming out of the compilers / interpreters designed for portability starting in the 1960s, and usually based on the ideas of solving the M*N compiler problem (languages*architectures), which some researchers proposed to solve by defining a universal intermediate language between the M languages and the N computer architectures, making it into a M+N problem. When I hear the term I think of Algol 60 (Randall & Russell: Algol 60 implementation, (1964)), Smalltalk-80 and Pascal, and certainly the Amsterdam Compiler Kit (Andrew Tanenbaum). Tanenbaum's paper on the design of the EM-1 byte code ("DESCRIPTION OF A MACHINE ARCHITECTURE FOR USE WITH BLOCK STRUCTURED LANGUAGE", Informatica Report IR-81) is worth reading. It doesn't use the term 'byte code', but the instruction format is heavily byte-oriented for processing efficiency, and anyone knowing EM-1 would almost certainly interpret the term as a synonym for intermediate code based on the same design principles. At a stretch, Griswold's book on portable SNOBOL4 implementation might be relevant, perhaps also Lisp Machine stuff, and I vaguely remember another author who wrote a lot about portable code (Winter?). Barron's and Pemberton's books on Pascal implementation may also provides clues. [[User:Athulin|Athulin]] ([[User talk:Athulin|talk]]) 09:27, 20 October 2022 (UTC)
::... and interestingly enough I come on the https://en.wikipedia.org/wiki/Virtual_machine#History where the term 'O-Code' is used for one such intermediate language. It is possible, that the term P code is a reference back to O code: they seem to have been used in much the same way. [[User:Athulin|Athulin]] ([[User talk:Athulin|talk]]) 18:02, 29 November 2022 (UTC)
== First sentence is wrong ==
WRT "Bytecode (also called portable code or p-code) is a form of instruction set designed for efficient execution by a software interpreter"
Most of that is wrong. I don't think bytecode is the same as portable code. I think that they have been conflated but they mean different things. Bytecode need not be portable. Portable code need not be byte-sized.
Bytecode is hardly an instruction set. An instruction set is what processors have. Bytecode is generally not what a processor processes. It's an intermediate executable format. Intermediate between source code and native executable. I've heard that there is a CPU for Java bytecode so in that context the bytecode is an instruction set. But, in the more common uses, it's not what I'd call an instruction set.
Efficient? Who says?
Bytecode is often _not_ interpreted! Some (many/most?) runtimes convert bytecode to native code at runtime ... via JIT compilation. [[User:Stevebroshar|Stevebroshar]] ([[User talk:Stevebroshar|talk]]) 13:27, 11 August 2025 (UTC)
|