SPARC

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.

WARTS — the Wisconsin Architectural Research Tool Set

Thursday, April 1st, 2004

Thanks to Manoj Plakal for a link to WARTS, a toolset developed at Wisconsin. WARTS includes the Executable Editing Library (EEL), which enables analysis and modification of SPARC Solaris executable programs using a C++ API. Distributed with the library are two tools built on EEL — a path profiler and an instruction count profiler. The path profiler is based on the technique described in Efficient Path Profiling by Thomas Ball and James Larus (ps link).

WARTS also includes a framework for memory system simulators, a cache profiler, two cache simulators, and the Wisconsin Wind Tunnel simulator.

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.

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.