Abstract
It is currently difficult fully to understand the performance of a modern dynamic programming language system, such as Java. One must observe execution in the context of specific architectures in order to evaluate the effects of optimizations. To do this we require simulators and compiler back-ends for a wide variety of machines that are capable of handling the demands of today?s dynamically compiled languages and their environments. We introduce here CMDL, a machine description language specifically designed for the automatic generation of simulators and compiler backends. CMDL is a class-based language with a C/Java style syntax aimed at extensibility. CMDL is processed by tools to generate descriptions of architectures represented in an intermediate form; the descriptions are then further combined and processed to produce efficient compiler and simulator components designed to "plug in" to existing frameworks. CMDL provides the necessary flexibility to advance the simulation paradigm to match the state of the art in computer systems.