Trait ReadMacro32

Source
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§

Source

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§

Source§

impl<R: Read + ?Sized> ReadMacro32 for R

All types that implement Read get methods defined in ReadMacro32 for free.