Knowing and understanding the use cases of a microprocessor is mandatory for the designer of such device. For most of its time, a general purpose central processing unit is executing code written in high abstraction level languages (e.g. C, C++ and Java) and translated to machine code by compiler software. Unfortunately the programs made this way are unable to reach the execution and resource efficiency of hand-written machine code due to the translation between the different abstraction levels. Implementing some features supporting this use case directly however, may result in a decent speedup.
My goal with this project was to familiarize with the most common scenarios, how a microprocessor might be used, which I did through the development of a C-compiler. The target of the compiler is an application specific instruction set processor, made for a project of the department. With this tool in hand, we will be able to implement complex algorithms in C language and then translate those to executable machine code, making it possible to compare runtime results from the different accelerator circuitries with the solutions using only the device’s native instructions.