Struct dynasmrt::UncommittedModifier

source ·
pub struct UncommittedModifier<'a> { /* private fields */ }
Expand description

This struct is a wrapper around an Assembler normally created using the Assembler.alter_uncommitted method. It allows the user to edit parts of the assembling buffer that cannot be determined easily or efficiently in advance. Due to limitations of the label resolution algorithms, this assembler does not allow labels to be used.

Implementations§

source§

impl<'a> UncommittedModifier<'a>

source

pub fn new( buffer: &mut Vec<u8>, base_offset: AssemblyOffset, ) -> UncommittedModifier<'_>

create a new uncommittedmodifier

source

pub fn goto(&mut self, offset: AssemblyOffset)

Sets the current modification offset to the given value

source

pub fn check(&mut self, offset: AssemblyOffset) -> Result<(), DynasmError>

Checks that the current modification offset is not larger than the specified offset.

source

pub fn check_exact(&mut self, offset: AssemblyOffset) -> Result<(), DynasmError>

Checks that the current modification offset is exactly the specified offset.

Trait Implementations§

source§

impl<'a> Debug for UncommittedModifier<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a> DynasmApi for UncommittedModifier<'a>

source§

fn offset(&self) -> AssemblyOffset

Report the current offset into the assembling target
source§

fn push(&mut self, value: u8)

Push a byte into the assembling target
source§

fn align(&mut self, alignment: usize, with: u8)

Push filler until the assembling target end is aligned to the given alignment.
source§

fn push_i8(&mut self, value: i8)

Push a signed byte into the assembling target
source§

fn push_i16(&mut self, value: i16)

Push a signed word into the assembling target
source§

fn push_i32(&mut self, value: i32)

Push a signed doubleword into the assembling target
source§

fn push_i64(&mut self, value: i64)

Push a signed quadword into the assembling target
source§

fn push_u16(&mut self, value: u16)

Push an usigned word into the assembling target
source§

fn push_u32(&mut self, value: u32)

Push an usigned doubleword into the assembling target
source§

fn push_u64(&mut self, value: u64)

Push an usigned quadword into the assembling target
source§

fn runtime_error(&self, msg: &'static str) -> !

This function is called in when a runtime error has to be generated. It panics.
source§

impl<'a, 'b> Extend<&'b u8> for UncommittedModifier<'a>

source§

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = &'b u8>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl<'a> Extend<u8> for UncommittedModifier<'a>

source§

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = u8>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.