Skip to content

BenMcAvoy/StrawberryVM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo

StrawberryVM

A fantasy virtual machine with limits on resources.
« Explore the docs »

Releases · Report Bugs · Request Features

TODO

  • Basic instructions
  • Addition implementation
  • Loading from a file
  • Text to binary
  • Assembler
  • Refactoring
  • Turing completion

What's happening with the project?

A new release may not be made for a moment as I am currently developing a programming language for the VM. The VM project is not dropped, I am just making somthing for it that is outside of this repo! Once it is functional it may either be a submodule or simply added into this repo.

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.
ShiftLeft Register (target register)and u8 (shift amount) Left shifts a specific register by a certain amount.

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.