Think In Geek

In geek we trust

Author Archive

How (not) to write a C++ front end – Part 2

In the previous installment I gave some context about the existence of Mercurium as a tool. In this chapter we will start digging into the parsing technology used.

How (not) to write a C++ front end – Part 1

As part of the work I did in my previous employer, we had to develop a C++ front end. This is never an easy task so I will use this series to share some experiences while developing it.

Exploring AArch64 assembler – Chapter 1

AArch64 is a new 64 bit mode that is part of the ARMv8 architecture presented in 2011 by ARM. It has been progressively been deployed in smartphones and servers. So I think it is a good moment to learn a bit more about the assembler of this architecture.

A tiny GCC front end – Part 11

Our tiny language features a few types: int, float, bool, string and arrays of those types. We can even declare new type names based on other types but it still missing a record type. Today we will address this.

A tiny GCC front end – Part 10

Today we will add a relatively simple feature that will be very useful for a future extension: type declarations.

A tiny GCC front end – Part 9

Today we will do something relatively easy: let’s add a way to declare boolean variables and express boolean literals.

A tiny GCC front end – Part 8

Now that we have the basic language set implemented we can consider adding new features to it. Today we will add arrays.

A tiny GCC front end – Part 7

In this part we will complete the missing statements from part 6 and finish our front end.


A tiny GCC front end – Part 6

In part 5 we described the objects that we will need to semantically analyze a tiny program. In current part we will extend the parser of part 4 to do the semantic analysis and create the GENERIC trees.


A tiny GCC front end – Part 5

In the last installment of this series we saw how to verify that the sequence of tokens of the input is syntactically valid. Today we will see what we need to give it meaning.


Previous Posts Next posts