pub trait ReadMacro32: Read {
// Provided method
fn disassemble(&mut self) -> Result<Instruction> { ... }
}
Expand description
Extends Read
with a method to read a VAX instruction (Instruction
).
§Examples
use vax_disassembler::ReadMacro32;
use std::io::Cursor;
macro_rules! disassemble {
($buf: expr, $text: expr) => {
let instruction = Cursor::new($buf).disassemble().unwrap();
assert_eq!(&format!("{}", instruction), $text);
};
}
disassemble!([0x05], "RSB");
disassemble!([0xE9, 0x50, 0x15], "BLBC R0, 21");
disassemble!([0xDE, 0x44, 0xC4, 0x00, 0xFE, 0x55], "MOVAL W^-512(R4)[R4], R5");
disassemble!([0xCB, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x50, 0x53], "BICL3 #16777215, R0, R3");
disassemble!([0x28, 0x8F, 0x00, 0x02, 0x61, 0xC1, 0x00, 0xFE], "MOVC3 #512, (R1), W^-512(R1)");
Provided Methods§
Sourcefn disassemble(&mut self) -> Result<Instruction>
fn disassemble(&mut self) -> Result<Instruction>
Read VAX MACRO32 machine code from a reader and disassemble it into a single
Instruction
.
§Examples
use vax_disassembler::ReadMacro32;
use std::io::Cursor;
macro_rules! disassemble {
($buf: expr, $text: expr) => {
let instruction = Cursor::new($buf).disassemble().unwrap();
assert_eq!(&format!("{}", instruction), $text);
};
}
disassemble!([0x01], "NOP");
disassemble!([0x30, 0x00, 0xFE], "BSBW -512");
disassemble!([0xDE, 0x44, 0x64, 0x55], "MOVAL (R4)[R4], R5");
disassemble!([0xEF, 0x0C, 0x14, 0x56, 0x57], "EXTZV S^#12, S^#20, R6, R7");
disassemble!([0x2C, 0x50, 0x61, 0x20, 0x52, 0x63], "MOVC5 R0, (R1), S^#32, R2, (R3)");
Implementors§
impl<R: Read + ?Sized> ReadMacro32 for R
All types that implement Read
get methods defined in ReadMacro32
for free.