Line data Source code
1 : use lief_ffi as ffi;
2 :
3 : use crate::common::FromFFI;
4 : use crate::assembly;
5 : use super::Opcode;
6 :
7 : /// This structure represents a Mips instruction (including mips64, mips32)
8 : pub struct Instruction {
9 : ptr: cxx::UniquePtr<ffi::asm_mips_Instruction>,
10 : }
11 :
12 : impl FromFFI<ffi::asm_mips_Instruction> for Instruction {
13 0 : fn from_ffi(ptr: cxx::UniquePtr<ffi::asm_mips_Instruction>) -> Self {
14 0 : Self {
15 0 : ptr,
16 0 : }
17 0 : }
18 : }
19 :
20 : impl assembly::Instruction for Instruction {
21 : #[doc(hidden)]
22 0 : fn as_generic(&self) -> &ffi::asm_Instruction {
23 0 : self.ptr.as_ref().unwrap().as_ref()
24 0 : }
25 : }
26 :
27 : impl Instruction {
28 : /// The instruction opcode as defined in LLVM
29 0 : pub fn opcode(&self) -> Opcode {
30 0 : Opcode::from(self.ptr.opcode())
31 0 : }
32 : }
|