pub enum Atom {
}
Expand description
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.
Pop
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.
Jump1
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.
Jump4
Follows a signed 4 byte jump.
Reads the dword under the cursor and adds it plus 4 to the cursor and continues matching.
Ptr
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.
VTypeName
Given a cursor pointing to the vtable follows it to its type name.
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.
Nop
Null instruction, used to make the parser easier to write.