#machine #assembly #assemble #emulator #mano

bin+lib rano

Mano Machine 的汇编器和仿真器

1 个不稳定版本

0.2.0 2021年3月30日

#14 in #assemble

自定义许可

84KB
2K SLoC

Rano

二进制文件

ra

Mano Machine 的汇编器。

# You can assemble a program like this:
cargo run --bin ra -- -r MAIN tests/example.mano
# ...
xxd tests/example.hex

# Or like
cargo install rano
# and then
ra -r MAIN tests/example.mano -o example.hex
# ...
xxd example.hex

要获取有关特定选项的更多信息,请运行 ra --help

构建模式

ra 支持两种构建模式:调试和发布。默认情况下选择调试。此类构建包含额外的信息,仿真器可以使用这些信息帮助您调试代码。发布构建删除了这些调试符号,因此大小更小。您可以通过以下方式选择它们

# For a debug build
ra -r MAIN tests/example.mano

# For a release build
ra -r MAIN --release tests/example.mano

rano

这尚未完成,但将成为 Mano Machine 仿真器。


lib.rs:

为 Mano Machine 汇编和运行程序

// It would generally be reccommended that you read this in from a file
let program =
    "VAR1, HEX 0100 \nVAR2, HEX 0010 \nMAIN, LDA VAR1 \nADD VAR2 \nSTA VAR2 \nHLT \n";
let bin = match
    ass::debug_build(&program, ResetVector::Label("MAIN".to_string())) {

    Ok(b) => b,

    // Gives you useful error messages
    Err(e) => {
        println!("{}", e);
        exit(-1)
    },

};

依赖项

~5–14MB
~152K SLoC