4个版本
使用旧的Rust 2015
0.2.2 | 2021年4月11日 |
---|---|
0.2.1 | 2017年1月2日 |
0.2.0 | 2016年8月31日 |
0.1.0 | 2016年8月30日 |
#634 in 编码
在 2 crate中使用
49KB
593 行
disasm6502
一个提供反汇编6502二进制代码功能的crate。支持解码禁用指令,提供周期计数信息,指令访问的寄存器和受影响的标志位。可接受的数据输入可以是字节数组、字节数组或二进制文件。
使用方法
# Cargo.toml
[dependencies]
disasm6502 = "0.2"
示例
extern crate disasm6502;
fn main()
{
let bytes = vec![0x05, 0x0B, 0x6C, 0x01, 0x02,
0x0A, 0xA2, 0xFF, 0x20, 0x02,
0xFD, 0x78, 0xD0, 0xFC, 0x1D,
0x05, 0x1E, 0x04, 0x15, 0x02,
0x96, 0xAB, 0x58, 0x61, 0x01,
0x91, 0xFB];
// disassemble...
let instructions = disasm6502::from_array(&bytes).unwrap();
// ...and print!
for i in instructions.iter() {
println!("{}", i);
}
}
构建说明
cargo build
cargo run --example disasm6502
这将运行示例,生成以下输出
$0000: 05 0B ORA $0B (3) Reads:[A] Writes:[A] Affects:[NZ]
$0002: 6C 01 02 JMP ($0201) (5)
$0005: 0A ASL A (2) Reads:[A] Writes:[A] Affects:[NZC]
$0006: A2 FF LDX #$FF (2) Writes:[X] Affects:[NZ]
$0008: 20 02 FD JSR $FD02 (6)
$000B: 78 SEI (2) Affects:[I]
$000C: D0 FC BNE $000A (*4)
$000E: 1D 05 1E ORA $1E05,X (*5) Reads:[AX] Writes:[A] Affects:[NZ]
$0011: 04 15 NOP $15 ??? (3)
$0013: 02 HLT ??? (1)
$0014: 96 AB STX $AB,Y (4) Reads:[XY]
$0016: 58 CLI (2) Affects:[I]
$0017: 61 01 ADC ($01,X) (6) Reads:[AX] Writes:[A] Affects:[NVZC]
$0019: 91 FB STA ($FB),Y (6) Reads:[AY]
$001B: .END
许可证
许可证为以下之一
- Apache License,版本2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)