pub enum CInstruction {
Show 36 variants
ADDI4SPN {
dest: CIRegister,
imm: CWideImmediate,
},
FLD {
dest: CFRegister,
base: CIRegister,
offset: CDImmediate,
},
LW {
dest: CIRegister,
base: CIRegister,
offset: CWImmediate,
},
LD {
dest: CIRegister,
base: CIRegister,
offset: CDImmediate,
},
FSD {
src: CFRegister,
base: CIRegister,
offset: CDImmediate,
},
SW {
src: CIRegister,
base: CIRegister,
offset: CWImmediate,
},
SD {
src: CIRegister,
base: CIRegister,
offset: CDImmediate,
},
ADDI {
dest: IRegister,
imm: CIImmediate,
},
ADDIW {
dest: IRegister,
imm: CIImmediate,
},
LI {
dest: IRegister,
imm: CIImmediate,
},
ADDI16SP {
imm: C16SPImmediate,
},
LUI {
dest: IRegister,
imm: CIImmediate,
},
SRLI {
dest: CIRegister,
shamt: CShamt,
},
SRAI {
dest: CIRegister,
shamt: CShamt,
},
ANDI {
dest: CIRegister,
imm: CIImmediate,
},
SUB {
dest: CIRegister,
src: CIRegister,
},
XOR {
dest: CIRegister,
src: CIRegister,
},
OR {
dest: CIRegister,
src: CIRegister,
},
AND {
dest: CIRegister,
src: CIRegister,
},
SUBW {
dest: CIRegister,
src: CIRegister,
},
ADDW {
dest: CIRegister,
src: CIRegister,
},
J {
offset: CJImmediate,
},
BEQZ {
src: CIRegister,
offset: CBImmediate,
},
BNEZ {
src: CIRegister,
offset: CBImmediate,
},
SLLI {
dest: IRegister,
shamt: CShamt,
},
FLDSP {
dest: FRegister,
offset: CDSPImmediate,
},
LWSP {
dest: IRegister,
offset: CWSPImmediate,
},
LDSP {
dest: IRegister,
offset: CDSPImmediate,
},
JR {
src: IRegister,
},
MV {
dest: IRegister,
src: IRegister,
},
EBREAK,
JALR {
src: IRegister,
},
ADD {
dest: IRegister,
src: IRegister,
},
FSDSP {
src: FRegister,
offset: CSDSPImmediate,
},
SWSP {
src: IRegister,
offset: CSWSPImmediate,
},
SDSP {
src: IRegister,
offset: CSDSPImmediate,
},
}Variants§
ADDI4SPN
FLD
LW
LD
FSD
SW
SD
ADDI
ADDIW
LI
ADDI16SP
Fields
§
imm: C16SPImmediateLUI
SRLI
SRAI
ANDI
SUB
XOR
OR
AND
SUBW
ADDW
J
Fields
§
offset: CJImmediateBEQZ
BNEZ
SLLI
FLDSP
LWSP
LDSP
JR
MV
EBREAK
JALR
ADD
FSDSP
SWSP
SDSP
Implementations§
Source§impl CInstruction
impl CInstruction
pub fn disassemble(instruction: &CInstruction) -> String
Sourcepub fn expand(&self) -> Instruction
pub fn expand(&self) -> Instruction
Converts a compressed instruction into the corresponding 32-bit Instruction.
Note that C.JALR does not have exactly the same effect as the corresponding JALR as described in the manual:
Strictly speaking, C.JALR does not expand exactly to a base RVI instruction as the value added to the PC to form the link address is 2 rather than 4 as in the base ISA, but supporting both offsets of 2 and 4 bytes is only a very minor change to the base microarchitecture.
Sourcepub fn encode(instruction: &CInstruction) -> u16
pub fn encode(instruction: &CInstruction) -> u16
Encodes a CInstruction into a u16.
Trait Implementations§
Source§impl Debug for CInstruction
impl Debug for CInstruction
Source§impl Display for CInstruction
impl Display for CInstruction
Source§impl PartialEq for CInstruction
impl PartialEq for CInstruction
impl StructuralPartialEq for CInstruction
Auto Trait Implementations§
impl Freeze for CInstruction
impl RefUnwindSafe for CInstruction
impl Send for CInstruction
impl Sync for CInstruction
impl Unpin for CInstruction
impl UnwindSafe for CInstruction
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