MIPS解释器
dashmips的Python项目详细描述
dashmips
dashmips是一个mips解释器cli程序。
要求
dashmips除了需要python 3.7
之外没有其他依赖项。
python 3.6中有一个dataclasses模块可以使这个模块工作,但它没有经过测试。
安装
建议使用pip:
安装dashmipspip install dashmips
用法
如果您是通过pip安装的,那么现在您的路径中应该有一个二进制文件,您可以通过键入:
dashmips
或等效
python -m dashmips
“编译”
要编译或运行mips程序,请运行:
dashmips compile FILE.mips
“编译”在dashmips中的意思是将源文件转换为json格式,程序可以更好地理解这种格式。您可以使用此json格式检查dashmips如何解释mips程序的内部。
运行
这个很简单:
dashmips run FILE.mips
Note: FILE is a positional argument in the run subcommand
调试
<>为了为调试DASMIPS留下一个灵活的环境,不提供一个用于MIPS程序的人调试的接口。所包含的调试器是一个服务器,它通过网络接受mips程序的json格式,并将执行请求的操作,返回更新的mips program json对象。有一个vscode扩展可以说特定于dashmips的json语言here。
调试协议
如果要继续手动调试,请注意有关协议的小说明。发送到调试服务器的json应采用以下格式:
interfaceDebugMessage{command:'start'|'step'|'continue'|'stop';program: MipsProgram;// MipsProgram can be found in `dashmips/models.py`// properties below are optionalbreakpoints?: number[];message?: string;error?: boolean;}
列出的命令是start
、step
、continue
和stop
。简而言之,每个操作都执行以下操作:
- 开始:将电脑设置为主标签
- 步骤:从当前电脑上只运行一条指令
- 继续:在当前电脑和断点之间运行尽可能多的指令
- 停止:不执行任何操作
服务器被设计为无状态,因此它可以同时处理许多客户端。
贡献
设置
如果您想为dashmips项目做出贡献,您将需要以下内容:
- Poetry用于依赖项,它将帮助您启动并运行
- 安装poetry并克隆此存储库之后:
poetry install
-将在不会损害全局设置的虚拟环境中安装dashmips依赖项。poetry run X
-可以在正确的python环境中运行x命令- 尝试
poetry run pytest --tap-stream --tap-outdir=testout --mypy --docstyle --codestyle
以确保所有测试都正确通过
添加系统调用/添加指令
可以使用相关的装饰器(^ {CD11>})在^ {CD9>}和^ {CD10>}目录中添加现有文件。
如果向这些子目录中的新文件添加指令或系统调用,请确保使用以下模式命名新文件:*_instructions.py
或*_syscalls.py
,其中*
是您选择的任何标识符。
测试环境安装
为了确保dashmips在干净的环境中正确安装,我创建了一个dockerfile,它为dashmips设置了所需的最小env。下面的命令可用于创建图像。
docker build --rm -f "tests\test_env\Dockerfile" -t dashmips_test_env:latest .
快乐编码!