1 unstable release
0.2.0 | Jan 20, 2024 |
---|
#192 in Emulators
30KB
606 lines
StrawberryVM
A fantasy virtual machine with limits on resources.
TODO
- Basic instructions
- Addition implementation
- Loading from a file
- Text to binary
- Assembler
- Refactoring
- Turing completion
Instructions
Name | Arguments | Description |
---|---|---|
No Operation | None | Does nothing. |
Push | u8 (8-bit value to push) | Pushes an 8-bit value onto the stack. |
Pop Register | Register (destination register) | Pops a value from the stack into the specified register. |
Push Register | Register (source register) | Pushes the value of the specified register onto the stack. |
Add Stack | None | Adds the top two values on the stack. |
Add Register | Two Registers (operands) | Adds the values of two registers and stores the result in the destination register. |
Signal | u8 (signal value) | Sends a signal with an 8-bit value. |
Jump | u8 (target address) | Jumps to the specified address in the program. |
Reserved symbols
Symbol | Use |
---|---|
$ | Hexadecimal value |
% | Binary value |
^ | Label value |
Credits
This project is following along with the live streams by TomMarksTalksCode and this project would not have been possible without him. He can also be found on GitHub and on his website.
Dependencies
~225–660KB
~16K SLoC