pub struct ProgramBuilder { /* private fields */ }Expand description
通用程序构建器,用于生成汇编指令序列
Implementations§
Source§impl ProgramBuilder
impl ProgramBuilder
Sourcepub fn new(architecture: Architecture) -> Self
pub fn new(architecture: Architecture) -> Self
创建新的程序构建器
Sourcepub fn architecture(&self) -> &Architecture
pub fn architecture(&self) -> &Architecture
获取当前架构
Sourcepub fn add_instruction(&mut self, instruction: Instruction) -> &mut Self
pub fn add_instruction(&mut self, instruction: Instruction) -> &mut Self
添加指令
Sourcepub fn add_instructions(&mut self, instructions: Vec<Instruction>) -> &mut Self
pub fn add_instructions(&mut self, instructions: Vec<Instruction>) -> &mut Self
批量添加指令
Sourcepub fn add_data_section(&mut self, name: String, data: Vec<u8>) -> &mut Self
pub fn add_data_section(&mut self, name: String, data: Vec<u8>) -> &mut Self
添加数据段
Sourcepub fn add_data_section_with_alignment(
&mut self,
name: String,
data: Vec<u8>,
alignment: u32,
) -> &mut Self
pub fn add_data_section_with_alignment( &mut self, name: String, data: Vec<u8>, alignment: u32, ) -> &mut Self
添加带对齐的数据段
Sourcepub fn instructions(&self) -> &[Instruction]
pub fn instructions(&self) -> &[Instruction]
获取所有指令
Sourcepub fn data_sections(&self) -> &[DataSection]
pub fn data_sections(&self) -> &[DataSection]
获取所有数据段
Sourcepub fn clear_instructions(&mut self) -> &mut Self
pub fn clear_instructions(&mut self) -> &mut Self
清空所有指令
Sourcepub fn clear_data_sections(&mut self) -> &mut Self
pub fn clear_data_sections(&mut self) -> &mut Self
清空所有数据段
Sourcepub fn compile_instructions(&self) -> Result<Vec<u8>>
pub fn compile_instructions(&self) -> Result<Vec<u8>>
编译指令为字节码
Sourcepub fn mov_reg_reg(
&mut self,
dest: Register,
src: Register,
) -> Result<&mut Self>
pub fn mov_reg_reg( &mut self, dest: Register, src: Register, ) -> Result<&mut Self>
创建 MOV 寄存器到寄存器指令
Sourcepub fn mov_reg_imm(&mut self, dest: Register, value: i64) -> Result<&mut Self>
pub fn mov_reg_imm(&mut self, dest: Register, value: i64) -> Result<&mut Self>
创建 MOV 立即数到寄存器指令
Sourcepub fn mov_reg_label(
&mut self,
dest: Register,
label: String,
) -> Result<&mut Self>
pub fn mov_reg_label( &mut self, dest: Register, label: String, ) -> Result<&mut Self>
创建 MOV 标签地址到寄存器指令
Sourcepub fn push_label(&mut self, label: String) -> Result<&mut Self>
pub fn push_label(&mut self, label: String) -> Result<&mut Self>
创建 PUSH 标签地址指令
Sourcepub fn call_indirect(&mut self, address: i32) -> Result<&mut Self>
pub fn call_indirect(&mut self, address: i32) -> Result<&mut Self>
创建间接 CALL 指令 - CALL [address]
Sourcepub fn add_reg_imm(&mut self, dest: Register, value: i64) -> Result<&mut Self>
pub fn add_reg_imm(&mut self, dest: Register, value: i64) -> Result<&mut Self>
创建 ADD 指令
Sourcepub fn sub_reg_imm(&mut self, dest: Register, value: i64) -> Result<&mut Self>
pub fn sub_reg_imm(&mut self, dest: Register, value: i64) -> Result<&mut Self>
创建 SUB 指令
Trait Implementations§
Source§impl Clone for ProgramBuilder
impl Clone for ProgramBuilder
Source§fn clone(&self) -> ProgramBuilder
fn clone(&self) -> ProgramBuilder
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ProgramBuilder
impl Debug for ProgramBuilder
Auto Trait Implementations§
impl Freeze for ProgramBuilder
impl RefUnwindSafe for ProgramBuilder
impl Send for ProgramBuilder
impl Sync for ProgramBuilder
impl Unpin for ProgramBuilder
impl UnsafeUnpin for ProgramBuilder
impl UnwindSafe for ProgramBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more