VR16 CPU Home Page
VR16-ISA v.01 🔗
THIS IS SUBJECT TO CHANGE, I’M EXPERIMENTING ENTIRELY.
Working for this 🔗
So instead of having a definite IS Format: 0000 00 00 00 00 0000, this would keep changing based on the opcode mentioned.
For this the entire ISA has to be designed.
- ADD:
- 0000 | 00 | 00 | 00 | 00 | xxxx
- opcode | store_at | operand_one | operand_two | dont-care
- ADDI:
- 0001 | 00 | 0000000000
- opcode | store_at | 10-bit immediate
- SUB:
- 0010 | 00 | 00 | 00 | 00 | xxxx
- opcode | store_at | operand_one | operand_two | dont-care
- SUBI:
- 0011 | 00 | 0000000000
- opcode | store_at | 10-bit immediate
- MUL:
- 0100 | 00 | 00 | 00 | 00 | xxxx
- opcode | store_at | operand_one | operand_two | dont-care
- MULI:
- 0101 | 00 | 0000000000
- opcode | store_at | 10-bit immediate
- DIV:
- 0110 | 00 | 00 | 00 | 00 | xxxx
- opcode | store_at | operand_one | operand_two | dont-care
- DIVI:
- 0111 | 00 | 0000000000
- opcode | store_at | 10-bit immediate
- STOREI:
- 1000 | 00 | 00000000
- opcode | destination_register | 10-bit immediate
- JUMP:
- 1001 | 000000000000 |
- opcode | jump_to_12_bit_address for now
- DELETE:
- 1010 | 00 | xxxxxxxxxx
- opcode | destination_register | dont-care
- AND:
- 1011 | 00 | 00 | 00 | xxxxxx
- opcode | store_at | operand_one | operand_two | dont-care
- OR:
- 1100 | 00 | 00 | 00 | xxxxxx
- opcode | store_at | operand_one | operand_two | dont-care
- NOT:
- 1101 | 00 | 00 | xxxxxxxx
- opcode | store_at | operand_one | dont-care
- XOR:
- 1110 | 00 | 00 | 00 | xxxxxx
- opcode | store_at | operand_one | operand_two | dont-care
- HALT:
- 1111 | xxxxxxxxxxxx
- opcode | dont-care
Kept only basic LOGIC operations as others can be done from these.