[−][src]Struct dynasmrt::VecAssembler
An assembler that assembles into a Vec<u8>, while supporting labels. To support the different types of relocations
it requires a base address of the to be assembled code to be specified.
Implementations
impl<R: Relocation> VecAssembler<R>[src]
pub fn new(baseaddr: usize) -> VecAssembler<R>[src]
Creates a new VecAssembler, with the specified base address.
pub fn commit(&mut self) -> Result<(), DynasmError>[src]
Resolves any relocations emitted to the assembler before this point. If an impossible relocation was specified before this point, returns them here.
pub fn alter(&mut self) -> UncommittedModifier[src]
Use an UncommittedModifier to alter uncommitted code.
This does not allow the user to change labels/relocations.
pub fn finalize(self) -> Result<Vec<u8>, DynasmError>[src]
Finalizes the VecAssembler, returning the resulting Vec<u8> containing all assembled data.
this implicitly commits any relocations beforehand and returns an error if required.
Trait Implementations
impl<R: Debug + Relocation> Debug for VecAssembler<R>[src]
impl<R: Relocation> DynasmApi for VecAssembler<R>[src]
fn offset(&self) -> AssemblyOffset[src]
fn push(&mut self, byte: u8)[src]
fn align(&mut self, alignment: usize, with: u8)[src]
fn push_i8(&mut self, value: i8)[src]
fn push_i16(&mut self, value: i16)[src]
fn push_i32(&mut self, value: i32)[src]
fn push_i64(&mut self, value: i64)[src]
fn push_u16(&mut self, value: u16)[src]
fn push_u32(&mut self, value: u32)[src]
fn push_u64(&mut self, value: u64)[src]
fn runtime_error(&self, msg: &'static str) -> ![src]
impl<R: Relocation> DynasmLabelApi for VecAssembler<R>[src]
type Relocation = R
The relocation info type this assembler uses.
fn local_label(&mut self, name: &'static str)[src]
fn global_label(&mut self, name: &'static str)[src]
fn dynamic_label(&mut self, id: DynamicLabel)[src]
fn global_relocation(
&mut self,
name: &'static str,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: R
)[src]
&mut self,
name: &'static str,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: R
)
fn dynamic_relocation(
&mut self,
id: DynamicLabel,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: R
)[src]
&mut self,
id: DynamicLabel,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: R
)
fn forward_relocation(
&mut self,
name: &'static str,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: R
)[src]
&mut self,
name: &'static str,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: R
)
fn backward_relocation(
&mut self,
name: &'static str,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: R
)[src]
&mut self,
name: &'static str,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: R
)
fn bare_relocation(
&mut self,
target: usize,
field_offset: u8,
ref_offset: u8,
kind: R
)[src]
&mut self,
target: usize,
field_offset: u8,
ref_offset: u8,
kind: R
)
fn forward_reloc(
&mut self,
name: &'static str,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: <Self::Relocation as Relocation>::Encoding
)[src]
&mut self,
name: &'static str,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: <Self::Relocation as Relocation>::Encoding
)
fn backward_reloc(
&mut self,
name: &'static str,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: <Self::Relocation as Relocation>::Encoding
)[src]
&mut self,
name: &'static str,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: <Self::Relocation as Relocation>::Encoding
)
fn global_reloc(
&mut self,
name: &'static str,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: <Self::Relocation as Relocation>::Encoding
)[src]
&mut self,
name: &'static str,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: <Self::Relocation as Relocation>::Encoding
)
fn dynamic_reloc(
&mut self,
id: DynamicLabel,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: <Self::Relocation as Relocation>::Encoding
)[src]
&mut self,
id: DynamicLabel,
target_offset: isize,
field_offset: u8,
ref_offset: u8,
kind: <Self::Relocation as Relocation>::Encoding
)
fn bare_reloc(
&mut self,
target: usize,
field_offset: u8,
ref_offset: u8,
kind: <Self::Relocation as Relocation>::Encoding
)[src]
&mut self,
target: usize,
field_offset: u8,
ref_offset: u8,
kind: <Self::Relocation as Relocation>::Encoding
)
impl<'a, R: Relocation> Extend<&'a u8> for VecAssembler<R>[src]
fn extend<T>(&mut self, iter: T) where
T: IntoIterator<Item = &'a u8>, [src]
T: IntoIterator<Item = &'a u8>,
fn extend_one(&mut self, item: A)[src]
fn extend_reserve(&mut self, additional: usize)[src]
impl<R: Relocation> Extend<u8> for VecAssembler<R>[src]
fn extend<T>(&mut self, iter: T) where
T: IntoIterator<Item = u8>, [src]
T: IntoIterator<Item = u8>,
fn extend_one(&mut self, item: A)[src]
fn extend_reserve(&mut self, additional: usize)[src]
Auto Trait Implementations
impl<R> RefUnwindSafe for VecAssembler<R> where
R: RefUnwindSafe,
R: RefUnwindSafe,
impl<R> Send for VecAssembler<R> where
R: Send,
R: Send,
impl<R> Sync for VecAssembler<R> where
R: Sync,
R: Sync,
impl<R> Unpin for VecAssembler<R> where
R: Unpin,
R: Unpin,
impl<R> UnwindSafe for VecAssembler<R> where
R: UnwindSafe,
R: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
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>,