Attila's Blog

About writing your own programming language in C, Go and Swift

What is bytecode

Oct 1, 2018 Comments

Categories: aspl
Tags: bytecode

Before making a small detour with Valgrind and generic containers, we implemented parsing. A small subset of it anyways. :) In the following couple of posts we are going to start working towards compiling those arithmetic expressions we parsed into bytecode. Before we could compile anything, we need to know what bytecode is, how to create it, and how to store it. In this post we will answer the first of these questions: what is bytecode and why we chose to use it.

Generic containers in C

Sep 17, 2018 Comments

Categories: aspl

We have a working parser that is capable of parsing the four basic arithmetic operators (+, -, *, /), negation (prefix -) and grouping (()). We could continue adding new features to the parser until it fully supports the ASPL language but it would be very boring to go this way. It’s going to be much more interesting to implement the full pipeline, and finally see our virtual machine executing some code, am I right? Today we start working towards a fully operational virtual machine. By the time we finish, we will have our own arithmetic calculator that supports addition, subtraction, multiplication, and division. This may seem like a small step but don’t worry, we will keep adding new features to it until we implement every feature of ASPL.

Checking for memory leaks with Valgrind

Sep 10, 2018 Comments

Categories: aspl

Working with C is very low level, and always means manual memory management. It is important to have at least one method in place to check for memory leaks. On MacOS, especially if you use XCode, it is quite easy to use Instruments for this. On other platforms, let’s say Linux, Valgrind is one of the best tools.