Internals of GCC

 

First interesting thing that came to mind is the new trend of the processors to have more cores a tackle better more parallelizable tasks, so compilers must change to take better advantage of the advancements in technology, surely considering where the technology is going, while in past years the focus was to increase the instructions per cycle and the clock speed of the processor, the truth is that there are physical limits to the minimum size of a chip, and we are reaching them pretty fast with our x86 architecture. 

The modularity of the components of gcc is also pretty impressive, it also makes sense, at one end the thing that changes is the language you are reading and interpreting, once you get to a universal structure the process of the gcc compiler should be the same and the front end and back end could be interchangeable while the middle end remains the same, so it reminds me a lot of the blocks we used to construct compilers and interpreters  

It was very impressive the number of optimizations that are done, even in the middle end, reducing the number of loops, memory utilization optimization even space optimization, didn’t thought about that but again it makes sense, there are a lot of components that need code to be small because they do not have a lot of memory themselves, or tying to optimize the code so a code that is run a lot of times, so the gains are lots and lots. 

The final part is pretty funny about the Java developers not accustomed for their code to be compiled in that way, sure they say that it does not have that much advantages anymore because the just in time method has more information about the program, but still having the advantages in systems with very low resources is still useful in a wide arrange of applications

Comentarios

Entradas más populares de este blog

Reflections on trusting trust

The mother of Compilers