* 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 #