Re: What is byte-code ? (=?iso-8859-1?q?Torben_=C6gidius_Mogensen?=)
15 Mar 2005 01:40:25 -0500

          From comp.compilers

Related articles
[4 earlier articles]
Re: What is byte-code ? (2005-03-08)
Re: What is byte-code ? (Randy) (2005-03-08)
Re: What is byte-code ? (Brian Inglis) (2005-03-08)
Re: What is byte-code ? (2005-03-08)
Re: What is byte-code ? (2005-03-08)
Re: What is byte-code ? (Carl Cerecke) (2005-03-08)
Re: What is byte-code ? (2005-03-15)
Re: What is byte-code ? (Chris Dollin) (2005-03-15)
Re: What is byte-code ? (Xous - Jose R. Negreira) (2005-03-18)
Re: What is byte-code ? (Nathan Moore) (2005-03-24)
Re: What is byte-code ? (2005-03-31)
Re: What is byte-code ? (2005-03-31)
Re: What is byte-code ? (Chris Dollin) (2005-03-31)
[8 later articles]
| List of all articles for this month |

From: (=?iso-8859-1?q?Torben_=C6gidius_Mogensen?=)
Newsgroups: comp.compilers
Date: 15 Mar 2005 01:40:25 -0500
Organization: Department of Computer Science, University of Copenhagen
References: 05-03-015 05-03-037 05-03-043 05-03-047
Keywords: interpreter, VM
Posted-Date: 15 Mar 2005 01:40:25 EST

Carl Cerecke <> writes:

> Torben Ęgidius Mogensen wrote:
> > bytecodes have traditionally been interpreted rather than translated,
> > it is only in the last couple of decades that bytecodes designed for
> > compilation or JIT's have emerged.
> What is the difference between bytecodes designed for (JIT) compilation
> and bytecodes designed for interpreting? Your comment sounds like there
> are specific design decisions regarding bytecode structure that
> facilitate compilation. Or, rather, that some design decisions can make
> compilation more difficult/inefficient.
> Would you shed some light on what aspects of bytecodes facilitate/hinder
> compilation (JIT or otherwise)? (I'm not trying to start an argument, I
> just don't know enough about bytecodes to answer my question)
> Cheers,
> Carl.
> [I'd want my JIT code to have stronger typeing so I could figure out at
> code generation time what the datatypes of the operands all were. -John]

I agree with John on types. But there are other considerations:

  - Bytecodes designed for interpretation needs low decoding overhead,
      so you would tend to have a lot of "work" done per instruction.
      With compiling, the decoding overhead is only paid once, so you can
      have relatively higher decode cost and, hence, less work per
      instruction. The compiler can then combine several small
      instructions into single machine-code instructions.

  - Bytecodes designed for compilation would tend to use registers
      rather than a stack. An interpreter would have difficulty using
      registers for all but a few user variables, as it can't indirectly
      address registers. Hence, you often see stack-based bytecode for
      interpretation. A compiler has no such problem, as it can compile
      into direct register accesses.

  - Bytecodes for interpretation often have specialized parameter-less
      instructions for common cases, such as adding 1 to a variable or
      setting it to 0, in order to reduce decoding overhead. With
      compilation, the saving in decode matters little, so there is no
      incentive to have such specialised instruction.


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.