[][src]Struct dynasmrt::Assembler

pub struct Assembler<R: Relocation> { /* fields omitted */ }

A full assembler implementation. Supports labels, all types of relocations, incremental compilation and multithreaded execution with simultaneous compiltion. Its implementation guarantees no memory is executable and writable at the same time.

Methods

impl<R: Relocation> Assembler<R>[src]

pub fn new() -> Result<Self>[src]

Create a new, empty assembler, with initial allocation size page_size.

pub fn new_dynamic_label(&mut self) -> DynamicLabel[src]

Create a new dynamic label ID

pub fn alter_uncommitted(&mut self) -> UncommittedModifier[src]

Use an UncommittedModifier to alter uncommitted code. This does not allow the user to change labels/relocations.

pub fn alter<F, O>(&mut self, f: F) -> Result<O, DynasmError> where
    F: FnOnce(&mut Modifier<R>) -> O, 
[src]

Use a Modifier to alter committed code directly. While this is happening no code can be executed as the relevant pages are remapped as writable. This API supports defining new labels/relocations, and overwriting previously defined relocations.

pub fn commit(&mut self) -> Result<(), DynasmError>[src]

Commit code, flushing the temporary internal assembling buffer to the mapped executable memory. This makes assembled code available for execution.

pub fn finalize(self) -> Result<ExecutableBuffer, Self>[src]

Finalize this assembler, returning the internal executablebuffer if no Executor instances exist. This panics if any uncommitted changes caused errors near the end. To handle these, call commit() explicitly beforehand.

pub fn reader(&self) -> Executor[src]

Create an executor which can be used to execute code while still assembling code

pub fn labels(&self) -> &LabelRegistry[src]

Provides access to the assemblers internal labels registry

pub fn labels_mut(&mut self) -> &mut LabelRegistry[src]

Provides mutable access to the assemblers internal labels registry

Trait Implementations

impl<R: Relocation> DynasmApi for Assembler<R>[src]

impl<R: Relocation> DynasmLabelApi for Assembler<R>[src]

type Relocation = R

The relocation info type this assembler uses.

impl<R: Relocation> Extend<u8> for Assembler<R>[src]

impl<'a, R: Relocation> Extend<&'a u8> for Assembler<R>[src]

impl<R: Debug + Relocation> Debug for Assembler<R>[src]

Auto Trait Implementations

impl<R> Send for Assembler<R> where
    R: Send

impl<R> Sync for Assembler<R> where
    R: Sync

impl<R> Unpin for Assembler<R> where
    R: Unpin

impl<R> UnwindSafe for Assembler<R> where
    R: RefUnwindSafe + UnwindSafe

impl<R> RefUnwindSafe for Assembler<R> where
    R: RefUnwindSafe

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]