[comp.lang.misc] Intermediate Code

cpp@calmasd.Prime.COM (Chuck Peterson) (04/10/90)

        I'm interested in designing an interpreter for a procedural
        language with object oriented features.  (No flames, please.
        I'm just describing what I'm doing.)

        What is going on in the world of intermediate code these days?
        (This may also be considered the world of "virtual machines.")  I'm
        referring to the representation of a program which is executed by an
        interpreter.  Are intermediate codes designed specifically for the
        interpretation of particular languages, or has anyone designed a
        general purpose intermediate code?  Or how about an intermediate
        code for procedural object oriented languages?

        One example of what I am talking about is p-code, the
        intermediate code of the UCSD Pascal system.  I've also
        heard of m-code (from which p-code was reportedly derived).

        Please mail any information, references, rumors, etc., to me.
        Thanks.

djones@megatest.UUCP (Dave Jones) (04/14/90)

From article <1102@calmasd.Prime.COM>, by cpp@calmasd.Prime.COM (Chuck Peterson):
> 
>         I'm interested in designing an interpreter for a procedural
>         language with object oriented features.  (No flames, please.
>         I'm just describing what I'm doing.)
>
>         What is going on in the world of intermediate code these days?

Everybody else seems to be using C as their intermediate code. Not a bad
idea, that. If you want to execute interactively entered code, as in
Sabre C, for example, you'll have a bit further to go, in that you will
need a fast compiler/dynamic-linker.

Directly interpretable code (p-code) usually suffers from machine-
dependence: byte-order, floating-point format, alignment conventions and
restrictions. So I would say, stay away from it if you can. I speak from
experience on this! I thought I was safe because I was more or less
committed to one vendor for a target-machine. But that vendor then came
out with a new architecture, bythefully imposing absurd alignment
restrictions on data, breaking my interpreter horribly. Aaaaaaarghhh!