diff options
-rw-r--r-- | src/armv7.rs | 14 | ||||
-rw-r--r-- | src/lib.rs | 45 |
2 files changed, 8 insertions, 51 deletions
diff --git a/src/armv7.rs b/src/armv7.rs index d65c8ae..222c8a6 100644 --- a/src/armv7.rs +++ b/src/armv7.rs @@ -552,21 +552,21 @@ impl ConditionCode { } impl Decodable for Instruction { - fn decode<'a, T: IntoIterator<Item=&'a u8>>(bytes: T) -> Option<Self> { + fn decode<T: IntoIterator<Item=u8>>(bytes: T) -> Option<Self> { let mut blank = Instruction::blank(); match blank.decode_into(bytes) { Some(_) => Some(blank), None => None } } - fn decode_into<'a, T: IntoIterator<Item=&'a u8>>(&mut self, bytes: T) -> Option<()> { - fn read_word<'a, T: IntoIterator<Item=&'a u8>>(bytes: T) -> Option<u32> { + fn decode_into<T: IntoIterator<Item=u8>>(&mut self, bytes: T) -> Option<()> { + fn read_word<T: IntoIterator<Item=u8>>(bytes: T) -> Option<u32> { let mut iter = bytes.into_iter(); let instr: u32 = - ((*iter.next()? as u32) ) | - ((*iter.next()? as u32) << 8 ) | - ((*iter.next()? as u32) << 16) | - ((*iter.next()? as u32) << 24); + ((iter.next()? as u32) ) | + ((iter.next()? as u32) << 8 ) | + ((iter.next()? as u32) << 16) | + ((iter.next()? as u32) << 24); Some(instr) } @@ -1,46 +1,3 @@ extern crate yaxpeax_arch; -use yaxpeax_arch::{Arch, Decodable, LengthedInstruction}; - -#[derive(Debug)] -pub enum Opcode { - NOP -} - -#[derive(Debug)] -pub struct Instruction { - pub opcode: Opcode -} - -impl LengthedInstruction for Instruction { - type Unit = <PIC24 as Arch>::Address; - fn len(&self) -> Self::Unit { - 3 // ish - } -} - -impl Decodable for Instruction { - fn decode<'a, T: IntoIterator<Item=&'a u8>>(bytes: T) -> Option<Self> { - let mut blank = Instruction { opcode: Opcode::NOP }; - match blank.decode_into(bytes) { - Some(_) => Some(blank), - None => None - } - } - fn decode_into<'a, T: IntoIterator<Item=&'a u8>>(&mut self, bytes: T) -> Option<()> { - match bytes.into_iter().next() { - Some(0x00) => { - self.opcode = Opcode::NOP; - Some(()) - }, - _ => None - } - } -} - -pub struct PIC24; -impl Arch for PIC24 { - type Address = u32; - type Instruction = Instruction; - type Operand = (); -} +pub mod armv7; |