#汇编 #解释器 #玩具 #语言

app ssbc

使用Rust编写的SSBC解释器。请参阅http://csci.viu.ca/~pwalsh/teaching/261/261/261.html

1个不稳定版本

0.1.0 2020年10月6日

#354仿真器

MIT/Apache

16KB
298

SSBC-rs

SSBC的解释器。

有关SSBC的更多信息,请参阅Peter Walsh的计算机体系结构课程,或一位往届学生用JavaScript编写的在线解释器

差异

SSBC具有不同的减法指令,这取决于你是CSCI 261还是CSCI 355,请参阅本文件的签名模式部分以获取设置模式的说明。

如果在不先重置的情况下告诉ssbc.pl运行,将会进入无限循环,没有副作用。如果在不先重置的情况下告诉ssbc-rs运行,它将开始解释,除非向端口B或D写入了一些内容,否则很可能会执行NOP。

在指令中对同一位置执行多个读取和/或写入的情况可能与ssbc.pl(未测试)的行为不同。

寄存器溢出(堆栈指针、程序计数器)回绕,而ssbc.pl可能因数组索引越界错误而崩溃(未测试)。

编译

在otter上,运行 ./build.sh。在其他地方,我建议使用cargo: cargo build

签名模式

默认情况下,ssbc-rs使用二进制补码减法,与CSCI 355 SSBC相同。

如果您想匹配261 SSBC的行为,请将 --cfg 'feature="signedmagnitude_sub"' 传递给otter上的build.sh进行构建,或在其他地方传递 --features=signedmagnitude_sub

用法

像使用 ssbc.pl 一样使用ssbc-rs二进制文件。如果您想运行SSBC的测试,您可以修改 .batch_test 以运行ssbc-rs二进制文件而不是 ssbc.pl

许可证

根据以下任一许可证授权:

由您选择。

贡献

除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交给作品以供包含的贡献应按照上述方式双重许可,不附加任何额外的条款或条件。

依赖

约320-770KB
约18K SLoC