diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 75 |
1 files changed, 6 insertions, 69 deletions
@@ -6,7 +6,9 @@ A 64-bit stack-based virtual machine and its assembler, created for fun. FVM includes two parts: the virtual machine and the assembler. -The build the assembler, you need to intall CHICKEN Scheme first. For example, on Arch Linux: +The build the assembler, you need to intall CHICKEN Scheme first. + +For example, on Arch Linux: sudo pacman -S chicken @@ -18,11 +20,11 @@ Then run make, which will build both components: make -If successful, you will see two executables, the virtual machine `fvm` and the assembler`fvm-as`. +If successful, you will see two executables, the virtual machine `fvm` and the assembler `fvm-as`. ## Run -After writing the assembly code (examples can be found in the `examples` directory), first run the assembler: +After writing the assembly code (examples can be found in the `examples/` directory), first run the assembler: ./fvm-as input.asm bytecode.bin @@ -45,69 +47,4 @@ There are no general-purpose registers; all operations happen on the stack. All opcodes are single-byte, except for immediate value instructions. -The instructions supported by FVM are as follows: - -### Register Instructions - -**sp** -<br>0x00 -<br>push stack pointer to stack - -**ssp** -<br>0x01 -<br>pop a 64-bit number from stack and set stack pointer to it. - -**bp** - -**sbp** - -**pc** - -**rv** - -**srv** - -### Immediate Number - -**imm** -<br> -<br> - -### Memory - -**ld** - -**ld8** - -**ld16** - -**ld32** - - -**st** - -**st8** - -**st16** - -**st32** - -### Stack Operations - -**dup** - -**pop** - -**swap** - -**over** - -**rot** - - -## Call Frame - - -## Pseudo-Opcodes - - +See `src/fvm.h` for a full list of opcodes. |
