archives

Compiler with easily retargetable and flexible back-end?

I'm currently taking a computer engineering course that involves a gratuitous amount of assembly programming. Sadly, it's largely superfluous to the actual course work (implementing processor componentns), so I'd like to program in a high level language.

I've looked at several compilers (gcc, mit-scheme, and ocaml) so far and all of them seemed to require a fair amount of work to retarget. Moreover, the processor we are implementing doesn't use a totally conventional execution model due to time constraints on the class. It essentially omits registers and works directly in memory.

I'll also admit my knowledge on compilation is lacking; it's taking me time to get through the dragon book1. I had no problem following along with Crenshaw's "Let's Build a Compiler!" on my architecture, and Ghuloum's "An Incremental Approach to Compiler Construction" also seemed doable, although I have not gone through it in any detail.

With that in mind, are there any compilers that would be easy (or at the very least, not excessively painful) to retarget to such an architecture? I'd assume that a lisp will probably occupy this niche, but I'm comfortable with any language.

1 I've heard that Wirth's compiler book is more approchable; is this true?

Edit: Added links.

Orc, a simple and expressive process calculus

Orc is a language in the process calculi tradition that I really like. It's combination of simplicity and expressiveness is amazing. Unlike some other process calculi, Orc does not make unreasonable assumptions (like mobility) about what properties are implementable in a distributed system. Orc's semantics are compatible with transparent distribution, distributed object-capability security, and distributed garbage collection. Here's a draft implementation of Orc in E providing approximately these three properties, with the caveats that E currently does not collect distributed cyclic garbage, and E's distributed failure semantics are wrong for Orc.

It would be good to see some embeddings of Orc into other distributed languages, and to compare these.