Lambda the Ultimate

inactiveTopic Investigations into Portable Object Codes
started 6/3/2002; 2:48:53 AM - last post 6/4/2002; 11:48:05 PM
Ehud Lamm - Investigations into Portable Object Codes  blueArrow
6/3/2002; 2:48:53 AM (reads: 1855, responses: 2)
Investigations into Portable Object Codes
In contrast to functional assembler code, a functional object code is akin to the lowest level intermediate code in a transformation-based, type-preserving compiler for a functional language. From a denotational point of view, it is indeed nothing, but a simple functional language; however, it has a clearly defined operational interpretation, which determines its translation into machine code. As the functional flavour of the program is still preserved, a range of optimisations (such as, type specialisation and points-to analysis) are still possible, which can not be applied anymore after the program has been translated into machine code. The abstraction level of functional object code is similar to that of the Spineless Tagless G-machine and an instance is defined in a workshop paper.

Another approach to language neutrality.

Posted to implementation by Ehud Lamm on 6/3/02; 4:35:25 AM

andrew cooke - Re: Investigations into Portable Object Codes  blueArrow
6/3/2002; 1:52:16 PM (reads: 801, responses: 0)
Not as low level, but Bridging the Gulf: A Common Intermediate Language for ML and Haskell is an interesting related paper. However, it's worth reading the corrigendum at that URL first...

Michael Christopher Vanier - Re: Investigations into Portable Object Codes  blueArrow
6/4/2002; 11:48:05 PM (reads: 699, responses: 0)
Jason Hickey's group at Caltech ( uses a similar approach for their compilers (and in the compiler class he teaches). The idea is to go through a series of transformations from concrete syntax to abstract syntax to intermediate representations (nothing new so far), and then to a very simple "functional intermediate representation" (FIR) which is in continuation passing style and is still typed. They've compiled several languages down to FIR this way. I don't think interoperability is the main goal, but it could potentially be used that way if (say) you converted the FIR into a bytecoded representation.