Register allocation is crucial for the performance of modern compilers. In this thesis we implemented a graph coloring register allocator and compared it to a linear scan approach. In cases where code quality is important our approach has potentially an advantage. In cases where compile time is more important the other approach has the advantage. In this thesis we first explain the two register allocation approaches and take a look at where register allocation fits into the compilation process. Then we look at our version of register allocation and show an complete example of how it works. For the comparison of the two approaches we use two benchmark suites. From the results of this comparison we learned that linear scan can perform better if it is highly optimized and graph coloring is not. In order to use the full advantages of graph coloring there are also a lot of further optimizations needed. From what we have learned creating this thesis, it is beneficial to have the possibility to choose between different kinds of register allocation. Depending on the situation, a better code performance can be more important than a shorter compile time. But to really make a difference in practice, a lot optimization effort has to be put into an implementation.