3个版本
使用旧Rust 2015
0.1.2 | 2017年1月29日 |
---|---|
0.1.1 | 2017年1月29日 |
0.1.0 | 2017年1月28日 |
在 嵌入式开发 中排名 766
92KB
2K SLoC
asm6502
一个正在进行的6502汇编器。
这个汇编器目前仅满足我的 NES模拟器 的即时需求。因此,它除了将6502汇编代码翻译成机器码外,什么都不做。甚至不支持标签,相对地址必须指定一个数字偏移量。不过,欢迎任何贡献。我希望这个汇编器能成为一个功能更齐全的汇编器。
用法
use asm6502::assemble;
let asm = "LDA #1\nADC #1\nCMP #2".as_bytes();
let mut buf = Vec::<u8>::new();
if let Err(msg) = assemble(asm, &mut buf) {
panic!("Failed to assemble: {}", msg);
}
assert_eq!(&[0xa9, 0x1, 0x69, 0x1, 0xc9, 0x2], &buf[..]);
函数 assemble
的输入和输出参数分别泛型于 Read
和 Write
特性。这个函数的典型用法是接受一个输入文件和一个输出文件。
已知问题
如果汇编以隐含指令结束,则需要在其后跟一个换行符才能正确解析,否则将无法解析。请参阅我StackOverflow上的问题 此处,其中记录了问题以及解决根本问题的nom pull request。
依赖关系
~660KB
~13K SLoC