From 3a1de246641e14e51dc138120d67842448c2bf21 Mon Sep 17 00:00:00 2001 From: iximeow Date: Sat, 3 Jul 2021 16:18:28 -0700 Subject: factor out MemoryAccessSize --- src/long_mode/display.rs | 6 ++++-- src/long_mode/mod.rs | 30 ++---------------------------- 2 files changed, 6 insertions(+), 30 deletions(-) (limited to 'src/long_mode') diff --git a/src/long_mode/display.rs b/src/long_mode/display.rs index d042119..f4d7a2c 100644 --- a/src/long_mode/display.rs +++ b/src/long_mode/display.rs @@ -1,5 +1,7 @@ extern crate yaxpeax_arch; +use MEM_SIZE_STRINGS; + use core::fmt; use yaxpeax_arch::{Colorize, ShowContextual, NoColors, YaxColors}; @@ -3334,7 +3336,7 @@ fn contextualize_intel(instr: &Instruction, colors: let x = Operand::from_spec(instr, instr.operands[0]); if x.is_memory() { - out.write_str(super::MEM_SIZE_STRINGS[instr.mem_size as usize - 1])?; + out.write_str(MEM_SIZE_STRINGS[instr.mem_size as usize - 1])?; out.write_str(" ")?; } @@ -3354,7 +3356,7 @@ fn contextualize_intel(instr: &Instruction, colors: out.write_str(", ")?; let x = Operand::from_spec(instr, instr.operands[i as usize]); if x.is_memory() { - out.write_str(super::MEM_SIZE_STRINGS[instr.mem_size as usize - 1])?; + out.write_str(MEM_SIZE_STRINGS[instr.mem_size as usize - 1])?; out.write_str(" ")?; } if let Some(prefix) = instr.segment_override_for_op(i) { diff --git a/src/long_mode/mod.rs b/src/long_mode/mod.rs index 4babca3..2cda6e4 100644 --- a/src/long_mode/mod.rs +++ b/src/long_mode/mod.rs @@ -4,6 +4,8 @@ mod evex; mod display; pub mod uarch; +use MemoryAccessSize; + #[cfg(feature = "fmt")] pub use self::display::DisplayStyle; @@ -4203,34 +4205,6 @@ impl Default for Instruction { } } -const MEM_SIZE_STRINGS: [&'static str; 64] = [ - "byte", "word", "BUG", "dword", "BUG", "BUG", "BUG", "qword", - "far", "mword", "BUG", "BUG", "BUG", "BUG", "BUG", "xmmword", - "BUG", "BUG", "BUG", "BUG", "BUG", "BUG", "BUG", "BUG", - "BUG", "BUG", "BUG", "BUG", "BUG", "BUG", "BUG", "ymmword", - "BUG", "BUG", "BUG", "BUG", "BUG", "BUG", "BUG", "BUG", - "BUG", "BUG", "BUG", "BUG", "BUG", "BUG", "BUG", "BUG", - "BUG", "BUG", "BUG", "BUG", "BUG", "BUG", "BUG", "BUG", - "BUG", "BUG", "BUG", "BUG", "BUG", "BUG", "ptr", "zmmword", -]; - -pub struct MemoryAccessSize { - size: u8, -} -impl MemoryAccessSize { - pub fn bytes_size(&self) -> Option { - if self.size == 63 { - None - } else { - Some(self.size) - } - } - - pub fn size_name(&self) -> &'static str { - MEM_SIZE_STRINGS[self.size as usize - 1] - } -} - impl Instruction { pub fn opcode(&self) -> Opcode { self.opcode -- cgit v1.1