# hence

# Registers

| Name  | Description     | Size |
| ----- | --------------- | ---- |
| `pc`  | Program counter |      |
| `opc` |                 |      |
|       |                 |      |

# Opcodes

| Index  | Name   | Description                                                        | Arguments |
| ------ | ------ | ------------------------------------------------------------------ | --------- |
| `0x00` | `nop`  | No operation                                                       |           |
| `0x01` | `push` | Push to stack                                                      |           |
| `0x02` | `pop`  | Pops top of stack                                                  |           |
| `0x03` | `ts`   | Store value into `tmp`                                             |           |
| `0x04` | `tsr`  | Store register's value into `tmp`                                  |           |
| `0x05` | `tss`  | Stores top of stack into `tmp`                                     |           |
| `0x06` | `tlr`  | Load `tmp`'s value into register                                   |           |
| `0x07` | `tlrc` | Same as `tlr` but only executes if register `a`'s first bit is `1` |           |
| `0x08` | `tls`  | Push value of `tmp` to stack                                       |           |
| `0x09` | `ld`   | Loads top of stack into register                                   |           |
| `0x0a` | `dbg`  | Debug                                                              |           |
| `0x0b` | `alu`  | Runs ALU with `tmp`'s value as operator                            |           |
| `0x0c` | `get`  | Sets `tmp` to memory at address in `tmp`                           |           |
| `0x0d` | `set`  | Sets memory to value at specific address                           |           |