eddic 1.2.3 – Better data-flow analysis

eddic Logo

I finally finished the version 1.2.3 of eddic. I have been quite busy finishing my master thesis in february and then taking some vacations in United States, so this version came later than I wanted. The main change is about the speed of the data-flow optimizations. I refactored a lot the data-flow to make it [...]



EDDI Compiler 1.1.0 – Member functions

eddic Logo

The version 1.1.0 of the EDDI Compiler (eddic) is available. It took much less time to implement that version than I thought. The main change to the language is the support of member functions. Each structure can now declare some functions. Functions can be called in each structure object. Here is an example of what can be done with [...]



EDDI Compiler 1.0.3 – Inlining and register allocation

eddic Logo

The version 1.0.3 of the EDDI Compiler (eddic) is available. The only improvement to the language is that the size of a global array can now be defined using a constant global variable. The main improvement of this version is the addition of inlining in the optimization engine. This optimization replace a call to a function by the body [...]



EDDI Compiler 1.0.2 – Better pointer support and Dead-Code Elimination

eddic Logo

The version 1.0.2 of the EDDI Compiler (eddic) is available. The language itself does not features something new, but the support of pointers has been greatly improved. You can now declare arrays of pointers and return pointers from functions. Structures can hold pointers as well. Moreover, arrays of structures are now supported. These new features [...]



EDDI Compiler 1.0.1 – Pointers and better struct support

eddic Logo

The version 1.0.1 of the EDDI Compiler (eddic) is now available. The language itself has been updated to support pointers. For now, this support is quite basic, but it allows to pass any type of the language by pointer to a function. No arithmetic is permitted on pointers, only dereferencing is allowed. The following sample [...]



EDDI Compiler 1.0 – Structures and Global Optimizations

eddic Logo

I’ve the pleasure to announce the availability of version 1.0 of the EDDI Compiler (eddic). This release adds one big enhancement to the language: Structures Structures are used like in the C programming language: For now on, you can declare structures, use local variables of the struct type and pass them as parameter. But the [...]



Advanced Compiler Design and Implementation – Book Review

Advanced Compiler Design and Implementation Cover

After having read my first book about compilers, I decided to try another one more focused on optimizations. For that, I chose “Advanced Compiler Design and Implementation“, by Steven S. Muchnick. This book covers several subjects about compilers, but more than 60% of the text is about compiler optimizations. The first chapter introduces the main [...]



EDDIC 0.8.1 : do while loop and better optimization

eddic Logo

Only three days after the 0.8 version, I finished the 0.8.1 version. It’s a minor version, so there is no big changes to the language. However, I added support for the do while loop in the source code. Another change is that assignment is now returning a value. That allows you to make some code [...]



Local optimization of Three-Address-Code

eddic Logo

Some compilers are using Three-Address-Code (TAC) as an intermediate representation. This representation is very simple to understand and write. Moreover, it’s easy to run some optimization on this representation. Each TAC statement has this general form : result = operand1 operator operand2 For example, here are some TAC statements: In this post, we will see [...]



Compilers : Principles, Techniques & Tools – Book Review

Dragon Book Cover

Some weeks ago, I finished reading Compilers : Principles, Techniques & Tools, by Afred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman. This book is also called the Dragon Book due to the cover. This book is a reference about compiler construction and design. If you are interested in this subject, this book [...]