VR16 CPU Home Page
VR16-ISA v.0.1.1 🔗
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
- 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.
Dilemma 🔗
Since the immediate operations handle the function of storei it has been removed. To replace this opcode, I’m gonna need something useful!
“What will that be?” will remain a questions for now 🗿.