Op

Enum Op 

Source
pub enum Op {
Show 118 variants Lui { rd: usize, u_imm: i32, }, Auipc { rd: usize, u_imm: i32, }, Jal { rd: usize, j_imm: i32, }, Jalr { rd: usize, rs1: usize, i_imm: i32, }, Beq { rs1: usize, rs2: usize, b_imm: i32, }, Bne { rs1: usize, rs2: usize, b_imm: i32, }, Blt { rs1: usize, rs2: usize, b_imm: i32, }, Bge { rs1: usize, rs2: usize, b_imm: i32, }, Bltu { rs1: usize, rs2: usize, b_imm: i32, }, Bgeu { rs1: usize, rs2: usize, b_imm: i32, }, Lb { rd: usize, rs1: usize, i_imm: i32, }, Lh { rd: usize, rs1: usize, i_imm: i32, }, Lw { rd: usize, rs1: usize, i_imm: i32, }, Lbu { rd: usize, rs1: usize, i_imm: i32, }, Lhu { rd: usize, rs1: usize, i_imm: i32, }, Sb { rs1: usize, rs2: usize, s_imm: i32, }, Sh { rs1: usize, rs2: usize, s_imm: i32, }, Sw { rs1: usize, rs2: usize, s_imm: i32, }, Addi { rd: usize, rs1: usize, i_imm: i32, }, Slti { rd: usize, rs1: usize, i_imm: i32, }, Sltiu { rd: usize, rs1: usize, i_imm: i32, }, Xori { rd: usize, rs1: usize, i_imm: i32, }, Ori { rd: usize, rs1: usize, i_imm: i32, }, Andi { rd: usize, rs1: usize, i_imm: i32, }, Slli { rd: usize, rs1: usize, shamt: u32, }, Srli { rd: usize, rs1: usize, shamt: u32, }, Srai { rd: usize, rs1: usize, shamt: u32, }, Add { rd: usize, rs1: usize, rs2: usize, }, Sll { rd: usize, rs1: usize, rs2: usize, }, Slt { rd: usize, rs1: usize, rs2: usize, }, Sltu { rd: usize, rs1: usize, rs2: usize, }, Xor { rd: usize, rs1: usize, rs2: usize, }, Srl { rd: usize, rs1: usize, rs2: usize, }, Or { rd: usize, rs1: usize, rs2: usize, }, And { rd: usize, rs1: usize, rs2: usize, }, Sub { rd: usize, rs1: usize, rs2: usize, }, Sra { rd: usize, rs1: usize, rs2: usize, }, Fence { pred: u32, succ: u32, }, FenceI, Ecall, Ebreak, Csrrw { rd: usize, rs1: usize, csr: u32, }, Csrrs { rd: usize, rs1: usize, csr: u32, }, Csrrc { rd: usize, rs1: usize, csr: u32, }, Csrrwi { rd: usize, zimm: u32, csr: u32, }, Csrrsi { rd: usize, zimm: u32, csr: u32, }, Csrrci { rd: usize, zimm: u32, csr: u32, }, Mul { rd: usize, rs1: usize, rs2: usize, }, Mulh { rd: usize, rs1: usize, rs2: usize, }, Mulhsu { rd: usize, rs1: usize, rs2: usize, }, Mulhu { rd: usize, rs1: usize, rs2: usize, }, Div { rd: usize, rs1: usize, rs2: usize, }, Divu { rd: usize, rs1: usize, rs2: usize, }, Rem { rd: usize, rs1: usize, rs2: usize, }, Remu { rd: usize, rs1: usize, rs2: usize, }, LrW { rd: usize, rs1: usize, aq: bool, rl: bool, }, ScW { rd: usize, rs1: usize, rs2: usize, aq: bool, rl: bool, }, AmoswapW { rd: usize, rs1: usize, rs2: usize, aq: bool, rl: bool, }, AmoaddW { rd: usize, rs1: usize, rs2: usize, aq: bool, rl: bool, }, AmoxorW { rd: usize, rs1: usize, rs2: usize, aq: bool, rl: bool, }, AmoandW { rd: usize, rs1: usize, rs2: usize, aq: bool, rl: bool, }, AmoorW { rd: usize, rs1: usize, rs2: usize, aq: bool, rl: bool, }, AmominW { rd: usize, rs1: usize, rs2: usize, aq: bool, rl: bool, }, AmomaxW { rd: usize, rs1: usize, rs2: usize, aq: bool, rl: bool, }, AmominuW { rd: usize, rs1: usize, rs2: usize, aq: bool, rl: bool, }, AmomaxuW { rd: usize, rs1: usize, rs2: usize, aq: bool, rl: bool, }, Flw { rd: usize, rs1: usize, i_imm: i32, }, Fsw { rs1: usize, rs2: usize, s_imm: i32, }, FmaddS { rd: usize, rs1: usize, rs2: usize, rs3: usize, rm: u32, }, FmsubS { rd: usize, rs1: usize, rs2: usize, rs3: usize, rm: u32, }, FnmsubS { rd: usize, rs1: usize, rs2: usize, rs3: usize, rm: u32, }, FnmaddS { rd: usize, rs1: usize, rs2: usize, rs3: usize, rm: u32, }, FaddS { rd: usize, rs1: usize, rs2: usize, rm: u32, }, FsubS { rd: usize, rs1: usize, rs2: usize, rm: u32, }, FmulS { rd: usize, rs1: usize, rs2: usize, rm: u32, }, FdivS { rd: usize, rs1: usize, rs2: usize, rm: u32, }, FsqrtS { rd: usize, rs1: usize, rm: u32, }, FsgnjS { rd: usize, rs1: usize, rs2: usize, }, FsgnjnS { rd: usize, rs1: usize, rs2: usize, }, FsgnjxS { rd: usize, rs1: usize, rs2: usize, }, FminS { rd: usize, rs1: usize, rs2: usize, }, FmaxS { rd: usize, rs1: usize, rs2: usize, }, FcvtWS { rd: usize, rs1: usize, rm: u32, }, FcvtWuS { rd: usize, rs1: usize, rm: u32, }, FmvXW { rd: usize, rs1: usize, }, FeqS { rd: usize, rs1: usize, rs2: usize, }, FltS { rd: usize, rs1: usize, rs2: usize, }, FleS { rd: usize, rs1: usize, rs2: usize, }, FclassS { rd: usize, rs1: usize, }, FcvtSW { rd: usize, rs1: usize, rm: u32, }, FcvtSWu { rd: usize, rs1: usize, rm: u32, }, FmvWX { rd: usize, rs1: usize, }, Fld { rd: usize, rs1: usize, i_imm: i32, }, Fsd { rs1: usize, rs2: usize, s_imm: i32, }, FmaddD { rd: usize, rs1: usize, rs2: usize, rs3: usize, rm: u32, }, FmsubD { rd: usize, rs1: usize, rs2: usize, rs3: usize, rm: u32, }, FnmsubD { rd: usize, rs1: usize, rs2: usize, rs3: usize, rm: u32, }, FnmaddD { rd: usize, rs1: usize, rs2: usize, rs3: usize, rm: u32, }, FaddD { rd: usize, rs1: usize, rs2: usize, rm: u32, }, FsubD { rd: usize, rs1: usize, rs2: usize, rm: u32, }, FmulD { rd: usize, rs1: usize, rs2: usize, rm: u32, }, FdivD { rd: usize, rs1: usize, rs2: usize, rm: u32, }, FsqrtD { rd: usize, rs1: usize, rm: u32, }, FsgnjD { rd: usize, rs1: usize, rs2: usize, }, FsgnjnD { rd: usize, rs1: usize, rs2: usize, }, FsgnjxD { rd: usize, rs1: usize, rs2: usize, }, FminD { rd: usize, rs1: usize, rs2: usize, }, FmaxD { rd: usize, rs1: usize, rs2: usize, }, FcvtWD { rd: usize, rs1: usize, rm: u32, }, FcvtWuD { rd: usize, rs1: usize, rm: u32, }, FeqD { rd: usize, rs1: usize, rs2: usize, }, FltD { rd: usize, rs1: usize, rs2: usize, }, FleD { rd: usize, rs1: usize, rs2: usize, }, FclassD { rd: usize, rs1: usize, }, FcvtDW { rd: usize, rs1: usize, rm: u32, }, FcvtDWu { rd: usize, rs1: usize, rm: u32, }, FcvtSD { rd: usize, rs1: usize, rm: u32, }, FcvtDS { rd: usize, rs1: usize, rm: u32, },
}
Expand description

A large enum holding a parsed instruction and its arguments.

Variants§

§

Lui

Fields

§u_imm: i32
§

Auipc

Fields

§u_imm: i32
§

Jal

Fields

§j_imm: i32
§

Jalr

Fields

§rs1: usize
§i_imm: i32
§

Beq

Fields

§rs1: usize
§rs2: usize
§b_imm: i32
§

Bne

Fields

§rs1: usize
§rs2: usize
§b_imm: i32
§

Blt

Fields

§rs1: usize
§rs2: usize
§b_imm: i32
§

Bge

Fields

§rs1: usize
§rs2: usize
§b_imm: i32
§

Bltu

Fields

§rs1: usize
§rs2: usize
§b_imm: i32
§

Bgeu

Fields

§rs1: usize
§rs2: usize
§b_imm: i32
§

Lb

Fields

§rs1: usize
§i_imm: i32
§

Lh

Fields

§rs1: usize
§i_imm: i32
§

Lw

Fields

§rs1: usize
§i_imm: i32
§

Lbu

Fields

§rs1: usize
§i_imm: i32
§

Lhu

Fields

§rs1: usize
§i_imm: i32
§

Sb

Fields

§rs1: usize
§rs2: usize
§s_imm: i32
§

Sh

Fields

§rs1: usize
§rs2: usize
§s_imm: i32
§

Sw

Fields

§rs1: usize
§rs2: usize
§s_imm: i32
§

Addi

Fields

§rs1: usize
§i_imm: i32
§

Slti

Fields

§rs1: usize
§i_imm: i32
§

Sltiu

Fields

§rs1: usize
§i_imm: i32
§

Xori

Fields

§rs1: usize
§i_imm: i32
§

Ori

Fields

§rs1: usize
§i_imm: i32
§

Andi

Fields

§rs1: usize
§i_imm: i32
§

Slli

Fields

§rs1: usize
§shamt: u32
§

Srli

Fields

§rs1: usize
§shamt: u32
§

Srai

Fields

§rs1: usize
§shamt: u32
§

Add

Fields

§rs1: usize
§rs2: usize
§

Sll

Fields

§rs1: usize
§rs2: usize
§

Slt

Fields

§rs1: usize
§rs2: usize
§

Sltu

Fields

§rs1: usize
§rs2: usize
§

Xor

Fields

§rs1: usize
§rs2: usize
§

Srl

Fields

§rs1: usize
§rs2: usize
§

Or

Fields

§rs1: usize
§rs2: usize
§

And

Fields

§rs1: usize
§rs2: usize
§

Sub

Fields

§rs1: usize
§rs2: usize
§

Sra

Fields

§rs1: usize
§rs2: usize
§

Fence

Fields

§pred: u32
§succ: u32
§

FenceI

§

Ecall

§

Ebreak

§

Csrrw

Fields

§rs1: usize
§csr: u32
§

Csrrs

Fields

§rs1: usize
§csr: u32
§

Csrrc

Fields

§rs1: usize
§csr: u32
§

Csrrwi

Fields

§zimm: u32
§csr: u32
§

Csrrsi

Fields

§zimm: u32
§csr: u32
§

Csrrci

Fields

§zimm: u32
§csr: u32
§

Mul

Fields

§rs1: usize
§rs2: usize
§

Mulh

Fields

§rs1: usize
§rs2: usize
§

Mulhsu

Fields

§rs1: usize
§rs2: usize
§

Mulhu

Fields

§rs1: usize
§rs2: usize
§

Div

Fields

§rs1: usize
§rs2: usize
§

Divu

Fields

§rs1: usize
§rs2: usize
§

Rem

Fields

§rs1: usize
§rs2: usize
§

Remu

Fields

§rs1: usize
§rs2: usize
§

LrW

Fields

§rs1: usize
§aq: bool
§rl: bool
§

ScW

Fields

§rs1: usize
§rs2: usize
§aq: bool
§rl: bool
§

AmoswapW

Fields

§rs1: usize
§rs2: usize
§aq: bool
§rl: bool
§

AmoaddW

Fields

§rs1: usize
§rs2: usize
§aq: bool
§rl: bool
§

AmoxorW

Fields

§rs1: usize
§rs2: usize
§aq: bool
§rl: bool
§

AmoandW

Fields

§rs1: usize
§rs2: usize
§aq: bool
§rl: bool
§

AmoorW

Fields

§rs1: usize
§rs2: usize
§aq: bool
§rl: bool
§

AmominW

Fields

§rs1: usize
§rs2: usize
§aq: bool
§rl: bool
§

AmomaxW

Fields

§rs1: usize
§rs2: usize
§aq: bool
§rl: bool
§

AmominuW

Fields

§rs1: usize
§rs2: usize
§aq: bool
§rl: bool
§

AmomaxuW

Fields

§rs1: usize
§rs2: usize
§aq: bool
§rl: bool
§

Flw

Fields

§rs1: usize
§i_imm: i32
§

Fsw

Fields

§rs1: usize
§rs2: usize
§s_imm: i32
§

FmaddS

Fields

§rs1: usize
§rs2: usize
§rs3: usize
§rm: u32
§

FmsubS

Fields

§rs1: usize
§rs2: usize
§rs3: usize
§rm: u32
§

FnmsubS

Fields

§rs1: usize
§rs2: usize
§rs3: usize
§rm: u32
§

FnmaddS

Fields

§rs1: usize
§rs2: usize
§rs3: usize
§rm: u32
§

FaddS

Fields

§rs1: usize
§rs2: usize
§rm: u32
§

FsubS

Fields

§rs1: usize
§rs2: usize
§rm: u32
§

FmulS

Fields

§rs1: usize
§rs2: usize
§rm: u32
§

FdivS

Fields

§rs1: usize
§rs2: usize
§rm: u32
§

FsqrtS

Fields

§rs1: usize
§rm: u32
§

FsgnjS

Fields

§rs1: usize
§rs2: usize
§

FsgnjnS

Fields

§rs1: usize
§rs2: usize
§

FsgnjxS

Fields

§rs1: usize
§rs2: usize
§

FminS

Fields

§rs1: usize
§rs2: usize
§

FmaxS

Fields

§rs1: usize
§rs2: usize
§

FcvtWS

Fields

§rs1: usize
§rm: u32
§

FcvtWuS

Fields

§rs1: usize
§rm: u32
§

FmvXW

Fields

§rs1: usize
§

FeqS

Fields

§rs1: usize
§rs2: usize
§

FltS

Fields

§rs1: usize
§rs2: usize
§

FleS

Fields

§rs1: usize
§rs2: usize
§

FclassS

Fields

§rs1: usize
§

FcvtSW

Fields

§rs1: usize
§rm: u32
§

FcvtSWu

Fields

§rs1: usize
§rm: u32
§

FmvWX

Fields

§rs1: usize
§

Fld

Fields

§rs1: usize
§i_imm: i32
§

Fsd

Fields

§rs1: usize
§rs2: usize
§s_imm: i32
§

FmaddD

Fields

§rs1: usize
§rs2: usize
§rs3: usize
§rm: u32
§

FmsubD

Fields

§rs1: usize
§rs2: usize
§rs3: usize
§rm: u32
§

FnmsubD

Fields

§rs1: usize
§rs2: usize
§rs3: usize
§rm: u32
§

FnmaddD

Fields

§rs1: usize
§rs2: usize
§rs3: usize
§rm: u32
§

FaddD

Fields

§rs1: usize
§rs2: usize
§rm: u32
§

FsubD

Fields

§rs1: usize
§rs2: usize
§rm: u32
§

FmulD

Fields

§rs1: usize
§rs2: usize
§rm: u32
§

FdivD

Fields

§rs1: usize
§rs2: usize
§rm: u32
§

FsqrtD

Fields

§rs1: usize
§rm: u32
§

FsgnjD

Fields

§rs1: usize
§rs2: usize
§

FsgnjnD

Fields

§rs1: usize
§rs2: usize
§

FsgnjxD

Fields

§rs1: usize
§rs2: usize
§

FminD

Fields

§rs1: usize
§rs2: usize
§

FmaxD

Fields

§rs1: usize
§rs2: usize
§

FcvtWD

Fields

§rs1: usize
§rm: u32
§

FcvtWuD

Fields

§rs1: usize
§rm: u32
§

FeqD

Fields

§rs1: usize
§rs2: usize
§

FltD

Fields

§rs1: usize
§rs2: usize
§

FleD

Fields

§rs1: usize
§rs2: usize
§

FclassD

Fields

§rs1: usize
§

FcvtDW

Fields

§rs1: usize
§rm: u32
§

FcvtDWu

Fields

§rs1: usize
§rm: u32
§

FcvtSD

Fields

§rs1: usize
§rm: u32
§

FcvtDS

Fields

§rs1: usize
§rm: u32

Implementations§

Source§

impl Op

Source

pub fn parse(instr: u32) -> Option<Op>

Parse an instruction. Returns None on failure.

Source

pub fn parse_c(instr: u16) -> Option<Op>

Parse a rv32c instruction. Returns None on failure.

Trait Implementations§

Source§

impl Clone for Op

Source§

fn clone(&self) -> Op

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Op

Source§

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

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

impl PartialEq for Op

Source§

fn eq(&self, other: &Op) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Op

Source§

impl Eq for Op

Source§

impl StructuralPartialEq for Op

Auto Trait Implementations§

§

impl Freeze for Op

§

impl RefUnwindSafe for Op

§

impl Send for Op

§

impl Sync for Op

§

impl Unpin for Op

§

impl UnwindSafe for Op

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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>,

Source§

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.