Struct rs6502::Disassembler
[−]
[src]
pub struct Disassembler { /* fields omitted */ }
Methods
impl Disassembler
[src]
A 6502 instruction disassembler
fn new() -> Disassembler
Creates a new, default instance of the Disassembler
Example
use rs6502::Disassembler; let dasm = Disassembler::new(); let code: Vec<u8> = vec![0xA9, 0x20, 0x8D, 0x00, 0x44]; let asm = dasm.disassemble(&code); assert_eq!(Disassembler::clean_asm(" 0000 LDA #$20 0002 STA $4400 "), Disassembler::clean_asm(asm));
fn with_code_only() -> Disassembler
Creates an instance of the Disassembler where no byte offsets are generated in the Assembly output
Example
use rs6502::Disassembler; let dasm = Disassembler::with_code_only(); let code: Vec<u8> = vec![0xA9, 0x20, 0x8D, 0x00, 0x44]; let asm = dasm.disassemble(&code); assert_eq!(Disassembler::clean_asm(" LDA #$20 STA $4400 "), Disassembler::clean_asm(asm));
fn with_verbose_output() -> Disassembler
Creates an instance of the Disassembler with all available information generated into the output
Example
use rs6502::Disassembler; let dasm = Disassembler::with_verbose_output(); let code: Vec<u8> = vec![0xA9, 0x20, 0x8D, 0x00, 0x44]; let asm = dasm.disassemble(&code); assert_eq!(Disassembler::clean_asm(" 0000 A9 20 LDA #$20 0002 8D 00 44 STA $4400 "), Disassembler::clean_asm(asm));
fn with_offset(offset: u16) -> Disassembler
fn disassemble(&self, raw: &[u8]) -> String
fn disassemble_with_addresses(&self, raw: &[u8]) -> Vec<(String, u16)>
Accepts a slice of 6502 bytecodes and translates them into an assembly String representation
Example
use rs6502::Disassembler; let dasm = Disassembler::new(); let code: Vec<u8> = vec![0xA9, 0x20, 0x8D, 0x00, 0x44]; let asm = dasm.disassemble(&code); assert_eq!(Disassembler::clean_asm(" 0000 LDA #$20 0002 STA $4400 "), Disassembler::clean_asm(asm));
fn clean_asm<I>(input: I) -> Vec<String> where
I: Into<String>,
I: Into<String>,
Returns a Vector of Strings where each entry is a non-empty line of assembly instructions, with all leading and trailing whitespace removed.
Example
use rs6502::Disassembler; assert_eq!(Disassembler::clean_asm(" 0000 LDA #$20 0002 STA $4400 "), &["0000 LDA #$20", "0002 STA $4400"]);