11 个版本 (4 个重大更改)
使用旧的 Rust 2015
0.4.0 | 2016 年 12 月 18 日 |
---|---|
0.3.0 | 2016 年 12 月 17 日 |
0.2.0 | 2016 年 12 月 16 日 |
0.1.0 | 2016 年 12 月 15 日 |
0.0.6 | 2015 年 6 月 16 日 |
#347 in 模拟器
每月 42 次下载
用于 dcpu16-gui
135KB
3K SLoC
DCPU-16
使用 Rust 编写的 DCPU-16 汇编器、反汇编器和模拟器。
DCPU-16 是来自 Notch (2012 年) 从未完成的游戏 0x10c 的 CPU 规范。有关 DCPU-16 的更多信息
要使用硬件设备(如显示器、键盘等)运行 DCPU-16 程序,请使用
完成的功能
DCPU-16 功能完善,可供使用
- 汇编器
- 标签
- 字符串字面量
- 算术字面量(例如
SET A, 0x8000+100*3
) - 可读的错误消息
- 反汇编器
- 独立的分词器
- 着色输出
- 模拟器
- 支持所有 DCPU-16 v1.7 指令
- 一些额外的指令,适合调试和测试
- 设备
- 显示器(LEM1802)
- 键盘
- 软盘驱动器(M35FD)
计划扩展功能
- 更多单元测试
- 并发支持
- DCPU-16 计算机之间的通信
- 一种简单的编程语言,编译为 DCPU-16
二进制文件
运行 cargo build --release
并将 dcpu16/target/release
添加到您的 PATH
- 汇编器
$dcpu16-assembler program.asm -oprogram.bin
- 反汇编器
$dcpu16-disassembler program.bin
- 分词器
$dcpu16-tokenizer program.bin
- 模拟器
$dcpu16 -pprogram.bin
库
除了提供二进制文件外,这个包还可以用作库,并嵌入到其他程序中。一个例子可以在dcpu16-gui中看到。
扩展
一些扩展(可能是临时的)
--- Special opcodes: (5 bits) --------------------------------------------------
C | VAL | NAME | DESCRIPTION
---+------+-------+-------------------------------------------------------------
0 | 0x13 | OUT a | prints a null-terminated string located at a in memory
0 | 0x14 | OUV a | prints a value in decimal and then a newline
---+------+-------+-------------------------------------------------------------
由于不支持硬件,你可以使用OUT
来输出到常规标准输出。另一个临时行为是,如果CPU读取到0x00
指令,则会终止。
汇编器的扩展
-- Assembler instructions ------------------------------------------------------
FORMAT | DESCRIPTION
--------------+-----------------------------------------------------------------
DAF c, v | DATA FILL - repeats a value a certain number of times
| c (count) and v (value) must be numerical literals
| e.g. DAF 256, 0xffff ; Fill 256 words with -1
--------------+-----------------------------------------------------------------
示例
将以下内容保存为prog.asm
OUT hello ; Print the string defined at 'hello'
DAT 0 ; This will terminate the program
:hello DAT "Hello World!\n", 0
汇编程序
$ assembler prog.asm -o prog.bin
运行它
$ emulator prog.bin
Hello World!
依赖项
~445KB