diff options
author | iximeow <me@iximeow.net> | 2019-03-10 17:25:12 -0700 |
---|---|---|
committer | iximeow <me@iximeow.net> | 2020-01-12 17:28:07 -0800 |
commit | e4eff1a3edec523a5ac0c2716573f9ad1ca432ad (patch) | |
tree | 936d6983ce1740a1edc29cebd37c9ee0cf1b844e /src | |
parent | f62de4c3eff32c4f3709d5d690671771fd453701 (diff) |
update a bunch of arm stuff
Diffstat (limited to 'src')
-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; |