RGM
A simple register machine simulator
Installation
cargo +beta install rgm
Usage
rgm 0.2.0
XBagon <xbagon@outlook.de>
A Register Machine Simulator
USAGE:
rgm.exe [FLAGS] [OPTIONS] <input>
FLAGS:
-d, --debug Prints debug information for each step
-h, --help Prints help information
-V, --version Prints version information
OPTIONS:
-c, --config <config>... Allows to set initial configuration of registers
USAGE: index:value index:value index:value ...
ARGS:
<input> Input rgm file
rgm files are made of instructions seperated by newlines.
Instructions
| Name |
Params |
Action |
PC |
| LOAD |
i |
r(0)=r(i) |
+=1 |
| STORE |
i |
r(i)=r(0) |
+=1 |
| ADD |
i |
r(0)=r(0)+r(i) |
+=1 |
| SUB |
i |
r(0)=r(0)-r(i) |
+=1 |
| MULT |
i |
r(0)=r(0)*r(i) |
+=1 |
| DIV |
i |
r(0)=r(0)/r(i) |
+=1 |
| GOTO |
j |
|
= j |
| Name |
Params |
Usage |
| CONDGOTO |
t[=,≤,≥,<,>], l, j |
IF r(0) t l GOTO j |
| Name |
Params |
Action |
PC |
| CLOAD |
l |
r(0)=l |
+=1 |
| CADD |
l |
r(0)=r(0)+l |
+=1 |
| CSUB |
l |
r(0)=r(0)-l |
+=1 |
| CMULT |
l |
r(0)=r(0)*l |
+=1 |
| CDIV |
l |
r(0)=r(0)/l |
+=1 |
| INDLOAD |
i |
r(0)=r(r(i)) |
+=1 |
| INDSTORE |
i |
r(r(i))=r(0) |
+=1 |
| INDADD |
i |
r(0)=r(0)+r(r(i)) |
+=1 |
| INDSUB |
i |
r(0)=r(0)-r(r(i)) |
+=1 |
| INDMULT |
i |
r(0)=r(0)*r(r(i)) |
+=1 |
| INDDIV |
i |
r(0)=r(0)/r(r(i)) |
+=1 |