qcode/value/insn/
pcode_op.rs1use super::mnemonic::{Args, MnemonicKind};
2use crate::value::LocalValueId;
3use serde::{Deserialize, Serialize};
4use smallvec::SmallVec;
5
6pub use pcode_types::PCodeOpId;
7
8pub const VM_INTERRUPT: &str = "vm.interrupt";
16
17#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
18pub struct PCodeOp {
19 pub id: PCodeOpId,
20 pub args: Vec<LocalValueId>,
21 pub dst: Option<LocalValueId>,
22}
23
24impl MnemonicKind for PCodeOp {
25 fn opcode(&self) -> &'static str {
26 "pcode_op"
27 }
28
29 fn args(&self) -> Args {
30 SmallVec::from_vec(self.args.clone())
31 }
32}