Standard ML

ckit — tool for source-to-source translations of C code

Thursday, April 1st, 2004

Thanks to Suan Yong for a link to ckit, which is a Standard ML library for parsing C code into an AST. Suan also mentions that ckit does not include a CFG generator, and requires preprocessed code.

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.

Zephyr Compiler Infrastructure

Wednesday, March 31st, 2004

Zephyr Compiler Infrastructure provides a means to define an intermediate representation and write passes on it in several languages; it also provides a hardware description language to power a code-generator generator. From the web site:

If you describe your intermediate forms using Zephyr’s Abstract Syntax Description Language (ASDL), we can generate data-structure definitions in C, C++, Java, Standard ML, and Haskell. Your IR can be serialized on disk and freely exchanged among compiler passes written in these languages…

[Zephyr] generate[s] the machine-dependent parts from descriptions of instructions’ semantics, of binary representations, or of other properties. Zephyr’s Computer Systems Description Languages (CSDL) let you describe as much or as little as you need for your application.

Zephyr also seems to provide a reasonable set of built-in optimizations.