PPC

PearColator

Wednesday, October 27th, 2004

The APT group at Manchester have released PearColator, which is a dynamic binary translator based on the Jikes RVM and licensed under the IBM CPL. PearColator converts PPC binaries to the Jikes IR, performs optimizations, and recompiles them for the host architecture. As a result, all of the optimizations supported by Jikes are available. PearColator is implemented in Java.

SableVM

Thursday, April 15th, 2004

SableVM is a free/Free spec-compliant and extensible JVM. It includes a JIT for PPC, SPARC and x86, but runs on several more architectures. It supports several different interpreter dispatch models (switched, threaded, inlined) and has an efficient runtime system. It is implemented in C with extensive use of M4 macros.

The GNU Compiler Collection

Thursday, April 1st, 2004

Manoj Plakal points out that I have not mentioned GCC. GCC, of course, has frontends for many languages, including C, C++, Objective-C, Java, Fortran, Pascal, and Ada; and backends for nearly every computer architecture ever created as well as a great many that weren’t. It has a reputation for being difficult to use for research, but that hasn’t stopped many people from doing so.

Feel free to TrackBack this entry if you’re using GCC for programming languages research, or if you have tips for using GCC for programming languages research.

C––, portable assembly language

Thursday, April 1st, 2004

C–– is a “portable assembly language” — a target language for compiler backends that can compile into native code on several platforms. It is implemented in OCaml and appears sufficiently general to handle a wide range of language features: for example, all values are untyped strings of bits, multiple return values are possible, and tail call optimization is readily available. C–– also supports a run-time interface, so that one may use implementations of support code that are most suitable for a given language.

There are code generators for x86, PPC, IA-64, SPARC, MIPS, ARM, and Alpha. According to the web page, as of July 2003, the x86 backend is reasonably mature, whereas the rest are under development.

Thanks to Kent Hunter for the pointer.

DAISY — Architecture Emulation thru Dynamic Compilation

Thursday, April 1st, 2004

DAISY is a dynamic recompiler that translates PowerPC executables into VLIW code on-the-fly, a page at a time, following program execution. It is implemented in C, runs on AIX/PPC machines, and includes a simulator for the DAISY VLIW architecture. Apparently, it can deal with self-modifying code, precise exceptions, and other thorny issues.

MLRISC

Wednesday, March 31st, 2004

MLRISC is a configurable compiler back-end that supports generating code for Alpha, PA-RISC, Sparc, x86, PowerPC, MIPS, and TI C6x processors. The MLRISC intermediate representation, target instruction set, flowgraph, and optimization suite are all parameterizable, so that a front-end can specialize each to produce the most suitable backend for a given language. The system is implemented in ML and is used by several compilers, including:

Thanks to Kent Hunter for the pointer.