3个版本

使用旧Rust 2015

0.1.2 2017年1月29日
0.1.1 2017年1月29日
0.1.0 2017年1月28日

嵌入式开发 中排名 766

MIT 许可证

92KB
2K SLoC

asm6502

Build Status Crates.io

一个正在进行的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 的输入和输出参数分别泛型于 ReadWrite 特性。这个函数的典型用法是接受一个输入文件和一个输出文件。

已知问题

如果汇编以隐含指令结束,则需要在其后跟一个换行符才能正确解析,否则将无法解析。请参阅我StackOverflow上的问题 此处,其中记录了问题以及解决根本问题的nom pull request

依赖关系

~660KB
~13K SLoC