Struct sp1_core::disassembler::InstructionTranspiler
source · pub struct InstructionTranspiler;Expand description
A transpiler that converts the 32-bit encoded instructions into instructions.
Trait Implementations§
source§impl InstructionProcessor for InstructionTranspiler
impl InstructionProcessor for InstructionTranspiler
source§fn process_lui(&mut self, dec_insn: UType) -> Self::InstructionResult
fn process_lui(&mut self, dec_insn: UType) -> Self::InstructionResult
LUI instructions are converted to an SLL instruction with imm_b and imm_c turned on. Additionally the op_c should be set to 12.
source§fn process_auipc(&mut self, dec_insn: UType) -> Self::InstructionResult
fn process_auipc(&mut self, dec_insn: UType) -> Self::InstructionResult
AUIPC instructions have the third operand set to imm << 12.
type InstructionResult = Instruction
fn process_add(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_addi(&mut self, dec_insn: IType) -> Self::InstructionResult
fn process_sub(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_xor(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_xori(&mut self, dec_insn: IType) -> Self::InstructionResult
fn process_or(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_ori(&mut self, dec_insn: IType) -> Self::InstructionResult
fn process_and(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_andi(&mut self, dec_insn: IType) -> Self::InstructionResult
fn process_sll(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_slli(&mut self, dec_insn: ITypeShamt) -> Self::InstructionResult
fn process_srl(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_srli(&mut self, dec_insn: ITypeShamt) -> Self::InstructionResult
fn process_sra(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_srai(&mut self, dec_insn: ITypeShamt) -> Self::InstructionResult
fn process_slt(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_slti(&mut self, dec_insn: IType) -> Self::InstructionResult
fn process_sltu(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_sltui(&mut self, dec_insn: IType) -> Self::InstructionResult
fn process_lb(&mut self, dec_insn: IType) -> Self::InstructionResult
fn process_lh(&mut self, dec_insn: IType) -> Self::InstructionResult
fn process_lw(&mut self, dec_insn: IType) -> Self::InstructionResult
fn process_lbu(&mut self, dec_insn: IType) -> Self::InstructionResult
fn process_lhu(&mut self, dec_insn: IType) -> Self::InstructionResult
fn process_sb(&mut self, dec_insn: SType) -> Self::InstructionResult
fn process_sh(&mut self, dec_insn: SType) -> Self::InstructionResult
fn process_sw(&mut self, dec_insn: SType) -> Self::InstructionResult
fn process_beq(&mut self, dec_insn: BType) -> Self::InstructionResult
fn process_bne(&mut self, dec_insn: BType) -> Self::InstructionResult
fn process_blt(&mut self, dec_insn: BType) -> Self::InstructionResult
fn process_bge(&mut self, dec_insn: BType) -> Self::InstructionResult
fn process_bltu(&mut self, dec_insn: BType) -> Self::InstructionResult
fn process_bgeu(&mut self, dec_insn: BType) -> Self::InstructionResult
fn process_jal(&mut self, dec_insn: JType) -> Self::InstructionResult
fn process_jalr(&mut self, dec_insn: IType) -> Self::InstructionResult
fn process_ecall(&mut self) -> Self::InstructionResult
fn process_ebreak(&mut self) -> Self::InstructionResult
fn process_mul(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_mulh(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_mulhu(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_mulhsu(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_div(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_divu(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_rem(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_remu(&mut self, dec_insn: RType) -> Self::InstructionResult
fn process_csrrc(&mut self, _: ITypeCSR) -> Self::InstructionResult
fn process_csrrci(&mut self, _: ITypeCSR) -> Self::InstructionResult
fn process_csrrs(&mut self, _: ITypeCSR) -> Self::InstructionResult
fn process_csrrsi(&mut self, _: ITypeCSR) -> Self::InstructionResult
fn process_csrrw(&mut self, _: ITypeCSR) -> Self::InstructionResult
fn process_csrrwi(&mut self, _: ITypeCSR) -> Self::InstructionResult
fn process_fence(&mut self, _: IType) -> Self::InstructionResult
fn process_mret(&mut self) -> Self::InstructionResult
fn process_wfi(&mut self) -> Self::InstructionResult
Auto Trait Implementations§
impl Freeze for InstructionTranspiler
impl RefUnwindSafe for InstructionTranspiler
impl Send for InstructionTranspiler
impl Sync for InstructionTranspiler
impl Unpin for InstructionTranspiler
impl UnwindSafe for InstructionTranspiler
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
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more