//! Some macros to help with disassembly parsing. #[macro_export] /// Generate a Mnemonic for an 8-bit Register from a ModRM byte. macro_rules! modrm_8b_register { ($self:ident, $variant:ident) => {{ let (target, reg) = $self.parse_modrm_byte(ImmediateOperand::Byte(0))?; Mnemonic::$variant(target, Register::by_id(ImmediateOperand::Byte(reg))?) }}; } #[macro_export] /// Generate a Mnemonic for a 16-bit Register from a ModRM byte. macro_rules! modrm_16b_register { ($self:ident, $variant:ident) => {{ let (target, reg) = $self.parse_modrm_byte(ImmediateOperand::Word(0))?; Mnemonic::$variant(target, Register::by_id(ImmediateOperand::Word(reg.into()))?) }}; } #[macro_export] /// Generate a Mnemonic for a 16-bit Segment Register from a ModRM byte. macro_rules! modrm_sregister { ($self:ident, $variant:ident) => {{ let (target, reg) = $self.parse_modrm_byte(ImmediateOperand::Word(0))?; Mnemonic::$variant(target, SegmentRegister::by_id(reg)?) }}; }