[−][src]Enum pelite::pattern::Atom
Pattern atoms.
The scanner will silently ignore nonsensical arguments.
Variants
Byte(u8)
Matches a single byte.
Save(u8)
Captures the cursor in the save array at the specified index.
Push(u8)
After a Pop later continue matching at the current cursor plus the argument.
Pops the cursor from the stack and continues matching.
Fuzzy(u8)
Sets a mask to apply on next byte match.
Skip(u8)
Skips a fixed number of bytes.
Back(u8)
Rewinds the cursor a fixed number of bytes.
Rangext(u8)
Extends the push, skip, back and many range by argument * 256
.
Many(u8)
Looks for the next pattern at most a certain number of bytes ahead.
Follows a signed 1 byte jump.
Reads the byte under the cursor, sign extends it, adds it plus 1 to the cursor and continues matching.
Follows a signed 4 byte jump.
Reads the dword under the cursor and adds it plus 4 to the cursor and continues matching.
Follows an absolute pointer.
Reads the pointer under the cursor, translates it to an RVA, assigns it to the cursor and continues matching.
Matching fails immediately when translation to an RVA fails.
Pir(u8)
Follows a position independent reference.
Reads the dword under the cursor and adds it to the saved cursor for the given slot and continues matching.
Check(u8)
Compares the cursor with the value in the given save slot and fails if they're not equal.
Aligned(u8)
Checks if the cursor is aligned to (1 << value)
.
ReadI8(u8)
Reads and sign-extends the byte under the cursor, writes to the given slot and advances the cursor by 1.
ReadU8(u8)
Reads and zero-extends the byte under the cursor, writes to the given slot and advances the cursor by 1.
ReadI16(u8)
Reads and sign-extends the word under the cursor, writes to the given slot and advances the cursor by 2.
ReadU16(u8)
Reads and zero-extends the word under the cursor, writes to the given slot and advances the cursor by 2.
ReadI32(u8)
Reads the dword under the cursor, writes to the given slot and advances the cursor by 4.
ReadU32(u8)
Reads the dword under the cursor, writes to the given slot and advances the cursor by 4.
Zero(u8)
Writes zero to the given save slot.
Case(u8)
Sets a retry point when matching fails.
When matching fails the cursor is restored and matching begins again skipping N atoms.
Break(u8)
Continues matching after a case atom, skipping the next N atoms.
Null instruction, used to make the parser easier to write.
Trait Implementations
impl Eq for Atom
[src]
impl Clone for Atom
[src]
impl PartialEq<Atom> for Atom
[src]
impl Copy for Atom
[src]
impl Debug for Atom
[src]
Auto Trait Implementations
impl Sync for Atom
impl Send for Atom
impl Unpin for Atom
impl UnwindSafe for Atom
impl RefUnwindSafe for Atom
Blanket Implementations
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,