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_values
- addi:
0001 | 00 | 0000000000 opcode | store_at | ten_bit_immediate_value
- sub:
0010 | 00 | 00 | 00 | 00 | xxxx opcode | store_at | operand_one | operand_two | dont_care_values
- subi:
0001 | 00 | 0000000000 opcode | store_at | ten_bit_immediate_value
- mul:
0010 | 00 | 00 | 00 | 00 | xxxx opcode | store_at | operand_one | operand_two | dont_care_values
- muli:
0001 | 00 | 0000000000 opcode | store_at | ten_bit_immediate_value
- div:
0010 | 00 | 00 | 00 | 00 | xxxx opcode | store_at | operand_one | operand_two | dont_care_values
- divi:
0001 | 00 | 0000000000 opcode | store_at | ten_bit_immediate_value
-
Extra opcode present, will implement a function soon.
- jump: Core functionality has to implemented in the code, so until then this won’t work when testing.
1001 | 000000000000 opcode | jump_to_twelve_bit_address
- delete:
1010 | 00 | xxxxxxxxxx opcode | delete_at | dont_care_values
- and:
0010 | 00 | 00 | 00 | 00 | xxxx opcode | store_at | operand_one | operand_two | dont_care_values
- or:
0010 | 00 | 00 | 00 | 00 | xxxx opcode | store_at | operand_one | operand_two | dont_care_values
- not:
0010 | 00 | 00 | 00 | xxxx opcode | store_at | operand_one | dont_care_values
- xor:
0010 | 00 | 00 | 00 | 00 | xxxx opcode | store_at | operand_one | operand_two | dont_care_values
- halt:
1111 | xxxxxxxxxxxx opcode | dont_care_values
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 🗿.