#machine #ram #cli #maszyna

bin+lib ram-machine

RAM 机器代码解释器

7 个版本 (稳定)

2.0.1 2024 年 3 月 2 日
2.0.0 2024 年 2 月 29 日
1.2.0 2024 年 2 月 8 日
0.2.0 2024 年 2 月 4 日
0.1.0 2024 年 2 月 3 日

#677命令行工具

Download history 4/week @ 2024-03-14 5/week @ 2024-03-28 1/week @ 2024-04-04 1/week @ 2024-05-16 1/week @ 2024-05-23

每月下载 293 次

GPL-3.0-only

34KB
805

RAM 机器解释器

此存储库包含一个 RAM 机器代码解析器和解释器的代码,由 Łukasz Szkup 在其 硕士论文 中定义。

安装

从 crates.io

cargo install ram-machine

从 GitHub

cargo install --git https://github.com/kamack38/ram-machine

使用方法

RAM machine code interpreter

Usage: ram [OPTIONS] <COMMAND>

Commands:
  run    Run ram machine code from file
  check  Validates ram code syntax of a given file
  init   Generate a shell completion file
  debug  Run ram machine code and see the tape, input, output for each instruction
  help   Print this message or the help of the given subcommand(s)

Options:
  -q, --quiet    Don't pass code output to STDOUT
  -h, --help     Print help
  -V, --version  Print version

生成 TAB 完成文件

要为给定的外壳生成 TAB 完成文件,请运行

ram init <shell>

从文件运行代码

ram run file.ram 1 2 3 4

调试代码

ram debug examples/three_sum.ram 1 2 3

以下是调试输出

╭───╮
│ 0 │
├───┤
│ ? │
╰───╯
Input: 1 2 3
Output:
Next instruction: READ 1
╭───┬───╮
│ 01 │
├───┼───┤
│ ?1 │
╰───┴───╯
Input: 1 2 3
Output:
Next instruction: READ 0
╭───┬───╮
│ 01 │
├───┼───┤
│ 21 │
╰───┴───╯
Input: 1 2 3
Output:
Next instruction: READ 2
╭───┬───┬───╮
│ 012 │
├───┼───┼───┤
│ 213 │
╰───┴───┴───╯
Input: 1 2 3
Output:
Next instruction: ADD 1
╭───┬───┬───╮
│ 012 │
├───┼───┼───┤
│ 313 │
╰───┴───┴───╯
Input: 1 2 3
Output:
Next instruction: ADD 2
╭───┬───┬───╮
│ 012 │
├───┼───┼───┤
│ 613 │
╰───┴───┴───╯
Input: 1 2 3
Output:
Next instruction: WRITE 0
╭───┬───┬───╮
│ 012 │
├───┼───┼───┤
│ 613 │
╰───┴───┴───╯
Input: 1 2 3
Output: 6
Next instruction: HALT

v1 版本路线图

  • 自动更改日志
  • 带有自动发布到 crates.io 的 Cargo crate
  • 使用 clap 解析参数
  • Repl
  • 调试模式

依赖关系

~3.5MB
~62K SLoC