Solid Sands: CGtrainer for Code Generator Development
Developing a C compiler for a new (or old) target processor is one of the greatest and most rewarding software engineering projects imaginable. It is also challenging and daunting. This is where SuperTest's new Code Generator Trainer suite comes in. The assumption is that you are not writing this compiler from scratch. You will be using an existing compiler development platform, either open source or proprietary, that already has a front-end, optimizations and a more or less retargetable code generator. Your task is to write a code generator for the new target processor.
SuperTest's Code Generation Trainer suite (CGtrainer) is going to make this project run smooth, efficiently and with a lot of fun on top of that. CGtrainer consists of nearly one thousand test files split over 25 carefully constructed levels. Each level addresses a specific capability of the code generator. Level 0 is there to set up the minimal interface that is needed to run the tests. The next levels introduce simple integer arithmetic, conversions, pointers, addressing modes for structures, register allocation, control flow and calling conventions. Beyond that are levels dealing with characters and shorts, long long arithmetic and varargs.
Each level is constructed to build upon the groundwork of the previous levels. In this way, code generator development progresses one logical step at a time. And when the time comes to refactor some of your earlier work, you can be confident that CGtrainer has your back. It gets you a better compiler, faster. By the time you pass the final boss level, your compiler is ready to take on SuperTest's big guns: the conformance suites that validate the front-end, optimization correctness and more nitty gritty details of code generation. There will be more work to do: add more features, improve efficiency, etc. You can be sure that this work builds on the solid foundations laid out by SuperTest's CGtrainer.
Want to get your hands on CGtrainer and start developing your code generator now? Get the SuperTest™ demo. You will find the first few levels included for free.