At present, all software is compiled using a custom GCC compiler backed by binutils and newlib. However, as the AEMB processor is sufficiently different from the original architecture, it may be time to start porting a new compiler to it. At the moment, the regular GCC compiler is used (with some software hacks) but the architecture can only diverge further in the future.
Therefore, steps are underway to build a custom port of a compiler. The leading candidate of choice at the moment is LLVM. In fact, work has already started on a custom LLVM back end. Another potential advantage of using a custom compiler is the possibility of introducing a compact 16-bit instruction mode. Every major embedded processor has one.
Once the main LLVM compiler has been ported, profiling can be done on the generated code to check on the types of code that are generated. It may be possible to create a 16-bit subset off these results. This mode can be activated by the use of branches to odd addresses. This will be particularly useful optimising subroutines as either 32-bit or 16-bit instructions.
However, this may require porting more than just LLVM. At the very least, it would require a custom assembler, which means porting over binutils as well. The most important factor when talking about a new compiler is the possibility of introducing an entirely new ABI, which is compatible with 32/16-bit modes. More thought needs to be put into this one.
This is beginning to sound like an entirely new architecture, toolchain and operating system.
0 Comments