Implementing a Virtual Machine in C