
* 8 16-bit registers

* Memory
	4096 bytes. address aligned by 2 bytes (16 bit)


* instruction set (16 bit)

0001 - add
0010 - movl (move low byte)
0011 - movh (move high byte)
0100 - load word
0101 - store word
0110 - beq
0111 - jmp
1000 - jr (jump register)

1111 - I/O Write

I/O = only 8 bits, syscall?

--- Format ---

Register operation format (R):

	opcode (4) | rs (4)  | r0 (4) | r1 (4)

	r0,r1 	- Operand registers.
	rs   	- save register

Register operation format (RI):

	opcode (4) | rs (4)  | r0 (4) | offset (signed 4)

	r0 	- Operand registers.
	offset  - constant offset from r0 value.
	rs   	- save register

Constant operation format (I):

	opcode (4) | reg (4) | data (signed 8)

	reg - Register
	data - Constant data to insert into reg.

Jump format (J):

	opcode (4) | addr (signed 12)



* load ascii hex from file.
* jump, branch instructions

start:
add r0, r4 # r4 = 1

beq r0, r1
jmp 2
jmp 3
load r3
jr r3
write r0


if (r0 == r1)
	jmp(b1);
else
	jmp(b2);
b1:
	load(r3);
	jmpl(r3);
b2:
	write(r0);


while (r0 == r1)
	r0++;

beq r0 r1 #
