Switching over to CarpVM

I decided to switch projects this Monday because the hackathon was falling apart. I've been loving this new project a whole lot.

I started work on CarpVM a few days before President's Day (Presidents' Day?), so it's a fairly new bit of code.

So, what is a Virtual Machine? Wikipedia says:

"A virtual machine (VM) is a software-based emulation of a computer. Virtual machines operate based on the computer architecture and functions of a real or hypothetical computer."

Carp is a bit simpler. Right now Carp can understand a form assembly language 1. Alright, so what's assembly language? Let's take another look at Wikipedia:

"An assembly language is a low-level programming language for a computer, or other programmable device, in which there is a very strong (generally one-to-one) correspondence between the language and the architecture's machine code instructions."

In essence, it's a human-readable set of instructions that deal directly with the CPU, its registers, and the computer memory. It's "low-level" in the sense that the programmer must work more closely with the hardware.

So... why this? It's kind of complicated. It's a tie between some internal competition with a friend of mine (also a programmer) and the drive to learn about more hardware and low-level programming. I have learned quite a bit about other assembly languages and architectures in the process of making my own.

Since I don't mind showing it off, here is a screenshot of the proposed syntax (right now I have to hard-code instructions in the VM instead of feeding it code):

1 It's kind of like MSP430 and then some.