1个不稳定版本
0.1.0 | 2020年10月6日 |
---|
#354 在 仿真器 中
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(《LICENSE-APACHE》或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(《LICENSE-MIT》或http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交给作品以供包含的贡献应按照上述方式双重许可,不附加任何额外的条款或条件。
依赖
约320-770KB
约18K SLoC