An introduction to LLVM in Go
blog.felixangell.com
blog.felixangell.com
https://gist.github.com/piroux/a856aa31525ca23238be
It can directly run with lli:
$ lli basics_array.ll
Note: I called it DynArray because I wanted it to grow itself when its nominal capacity would have been reached, but I never took the time to implement this feature ...
For instance, the prototype of the function adding an element could be :
define void @DynArrayI__add(%DynArrayI* %dynarray, i64 %elt)
You might need to add a capacity field to the type of DynArrayI and update others functions, to take it into account.
But according to me it is doable, even for a beginner, because the code is entirely written in LLVM.
So feel free to try !
I would suggest sticking to a simple language, rather than trying to build a C compiler or something. The principles are what you really ought to learn, and those are the same. Even just writing a brainfuck interpreter is a good exercise if you don't know how to do it. (Despite the profane name and its implication that it ought to be something very complicated, brainfuck is actually very simple. Some people use "write a brainfuck interpreter" as their test project whenever they pick up a new language.)
Compilers and interpreters are one of the things that make the difference between a "code monkey" and a "software engineer", and even in web development they can be incredibly useful.
Writing a Brainfuck interpreter is a good idea! (I'm aware of the language.) Perhaps I could also try ArnoldC. :3
Recently, I began working with HHVM, I've been very interested in the subject of compilers and interpreters. I would certainly love to build such a thing for JS one day.
I'm pretty sure the author means lldb?
I'm sure it's a good article and all that, but such a typo for a core tool in the beginning of an article kind of makes you lose confidence in the accuracy of what follows.
The author might want to fix things up :)