The Formal Languages and Compilers group has been involved in Compiler Construction projects, funded by the European Commission and by STMicroelectronics, for more than 10 years.
The current focus is on compiler support for many-core heterogeneous platforms.
The goal of this project is to build an effective compiler toolchain for the OpenCL API and language, targeting both NUMA x86 multicore systems and STMicroelectronics novel heterogeneous many-core architecture, STHORM. The project is currently composed of the following tools:
We are currently working on completing OpenCRun and on supporting new features of the OR10n/PULP OpenRISC core from ETH Zurich and University of Bologna.
Within the Programming Languages and Compilers area, we have run several projects that resulted in the implementation of four different virtual execution environments.
The application fields of bytecode virtual machines and VLIW processors overlap in the area of embedded and mobile systems, and these two technologies offer different benefits, namely high code portability and low power consumption and hardware costs. The adoption of dynamic compilation makes it possible to bridge the gap between the two technologies, but special attention must be paid to the need for software instruction scheduling that characterizes the VLIW architectures.
This project aims at exploring the possibilities of applying JIT translation of Java Bytecode and CIL (and related virtual machine instructions) on highly parallel architectures, such as VLIWs and multiprocessors.
ILDJIT: design and implementation of a Common Language Runtime (a.k.a. .Net) Virtual Execution System. ILDJIT started building up from the Portable.Net platform, but is currently mostly independent from it – it only uses instruction selection, register allocation and the mscorelib
from that project.
ILDJIT was our main development effort for several years, with a team of developers including a PhD student (Simone Campanoni, lead developer), a couple of Master students and two undergraduate students doing their thesis work on the system and several graduate students working on smaller scale projects such as garbage collectors, dataflow optimization, and class library implementation.
ILDJIT development was pursued within the FP7 STREP European project Open Media Platform, started in January 2008 and concluded in January 2010.
Design and implementation of a Java JIT compiler
SeleKaffe is a virtual machine that implements selective dynamic compilation, showcasing advanced method selection techniques based on runtime profiling and fast static analysis.
It extends Kaffe/i386 to support two execution engines at the same time (intrp and jit3) and to perform runtime profiling and engine selection.
Jelatine: design and implementation of a Java VM (from scratches!) based on the CLDC Micro Edition specs.
While the machine is now fairly stable, we are still looking for further developments as well as potential applications (porting and packaging for specific embedded devices as well as testing applications on those devices).
Jelatine's strength lies in its extremely reduced memory requirements vs. its ability to support a fairly complex set of features (CLDC 1.0).
A prototype of a domain specific language aiming at cryptography, published at FDL2007. While the development itself is minimal, the field is open for further development – if you're looking for a Laurea specialistica thesis in programming languages design, I'd be interested in further exploring the field.