Master's Thesis Proposals

Master's Thesis Proposals

Are you an engineering student with focus on programming? Take a look at our master's thesis proposals!

Modelling Option Logic in an IDE

IAR Embedded Workbench is a C/C++ Integrated Development Environment (IDE). As such, one of the primary tasks it performs is to compile C/C++ source into executable code. In order to compile a project correctly, there are a number of different configuration options the user may need to set (e.g. optimization levels, language compliance level, CPU variant to generate code for, etc). These “abstract” options are then translated into “concrete” options (typically command-line switches to a compiler or linker executable). The set of options and the associated logic is sometimes referred to the project model.

The project model is used not only by the IAR Embedded Workbench IDE application. For example, IAR Systems supports Eclipse as an alternate IDE for IAR Systems' compilers and debuggers. This means that the project model needs to be accessible from Eclipse as well.

“Parallel” debugging

As a compiler developer it sometimes happens that a modification of the code, the addition of new functionality or a bug fix, has unintended side effects and the compiler now generates incorrect code. This will show up during testing, but for complex test programs it is often a tedious task of tracking down the problem. The “parallel” debugger is meant as a tool to simplify that process.

The “parallel” debugger should start two debugging sessions in parallel, one with a binary compiled with a correct compiler and one with a binary compiled with the broken compiler, and issue same the commands to both debug sessions and stop when the state differs between the two debug sessions.

Verifying debug information

IAR Embedded Workbench is a C/C++ Integrated Development Environment (IDE). As such, two of the primary tasks it performs is to compile C/C++ source into efficient executable code and to make available a debugger for findning problems in the C/C++ source.

Apart from translating C/C++ source into executable code it generates information for the debugger, so called debug info, to facilitate that the debugging session can occur at the C/C++ source level instead of at the, more hard to understand, machine level.

The compiler starts with translating the C/C++ source into an intermediate language, IL, better suited for applying optimizations on it. That IL includes the debug info as well. The compiler then applies a lot of different optimizations on the IL by rewriting the IL. Lastly it produces the executable code and the resulting debug info from the IL.

To test that the compiler produces correct executable code after all the optimization transforms on the IL, test C/C++ sources are used that should produce a specific result.

Code Generation from UML State Diagrams

IAR Visual State is an environment where a user can draw state diagrams in the UML notation. These can currently be used to generate highly efficient C or C++ code. The use of it is primarily for embedded applications but the application can be used for any type of program where some part of it is constituted of a state machine. It would be of interest to explore generation of code in languages that are of more wide use outside the core embedded domain or in embedded systems with less extreme requirements for optimization of time and space. Currently typical such language candidates would be Python and JavaScript.

Effective Integer Multiplications For Devices Without A Multiplier

IAR Embedded Workbench is a C and C++ development environment for a large number of microprocessors. The compiler, which translates user programs into assembly, is known to generate small and fast code.

Some microcontrollers used in the embedded industry do not have hardware for performing operations like *multiplication* and *division*. In this case, the compiler must generate code to perform the operations using available operations, like "shift" and "addition".

Today, when generating code for a multiplications where one operand is known at compile-time, the compiler use the straight-forward code generation strategy of generating shifts and additions. For many constants this is adequate. However, there are a number of research papers describing various techniques for generating more efficient code sequences. This can be accomplished by reusing already computer values and by using other operations, like "subtract".

Mining cycle information from Cortex-M trace data streams

IAR Embedded Workbench is a C/C++ Integrated Development Environment (IDE). It consists of tools such as complier, assembler, linker, editor and debugger. The debugger can connect to target MCUs via a range of different debug probes. Some of the more advanced probes can collect trace information from the CPU while it is executing.