summaryrefslogtreecommitdiff
path: root/rust/src/medium_level_il/lift.rs
diff options
context:
space:
mode:
authorMason Reed <mason@vector35.com>2025-05-11 21:00:55 -0400
committerMason Reed <35282038+emesare@users.noreply.github.com>2025-05-12 17:45:24 -0400
commit3b14d1605cf9ea638a0d058911a8c1e233a9f70d (patch)
tree578fde48ea785a21072ba0e2c5c93061e4ba5a72 /rust/src/medium_level_il/lift.rs
parente2fac46543527d27eab2fc77cf19a4f715438857 (diff)
[Rust] Add missing instruction types to MLIL
Diffstat (limited to 'rust/src/medium_level_il/lift.rs')
-rw-r--r--rust/src/medium_level_il/lift.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/rust/src/medium_level_il/lift.rs b/rust/src/medium_level_il/lift.rs
index f5ee45b3..399bda78 100644
--- a/rust/src/medium_level_il/lift.rs
+++ b/rust/src/medium_level_il/lift.rs
@@ -129,10 +129,16 @@ pub enum MediumLevelILLiftedInstructionKind {
Rlc(LiftedBinaryOpCarry),
Rrc(LiftedBinaryOpCarry),
Call(LiftedCall),
+ CallOutput(LiftedCallOutput),
+ CallParam(LiftedCallParam),
+ CallOutputSsa(LiftedCallOutputSsa),
+ CallParamSsa(LiftedCallParamSsa),
Tailcall(LiftedCall),
Intrinsic(LiftedIntrinsic),
Syscall(LiftedSyscallCall),
IntrinsicSsa(LiftedIntrinsicSsa),
+ MemoryIntrinsicSsa(LiftedMemoryIntrinsicSsa),
+ MemoryIntrinsicOutputSsa(LiftedMemoryIntrinsicOutputSsa),
CallSsa(LiftedCallSsa),
TailcallSsa(LiftedCallSsa),
CallUntypedSsa(LiftedCallUntypedSsa),
@@ -269,10 +275,16 @@ impl MediumLevelILLiftedInstruction {
Rlc(_) => "Rlc",
Rrc(_) => "Rrc",
Call(_) => "Call",
+ CallOutput(_) => "CallOutput",
+ CallParam(_) => "CallParam",
+ CallOutputSsa(_) => "CallOutputSsa",
+ CallParamSsa(_) => "CallParamSsa",
Tailcall(_) => "Tailcall",
Syscall(_) => "Syscall",
Intrinsic(_) => "Intrinsic",
IntrinsicSsa(_) => "IntrinsicSsa",
+ MemoryIntrinsicSsa(_) => "MemoryIntrinsicSsa",
+ MemoryIntrinsicOutputSsa(_) => "MemoryIntrinsicOutputSsa",
CallSsa(_) => "CallSsa",
TailcallSsa(_) => "TailcallSsa",
CallUntypedSsa(_) => "CallUntypedSsa",
@@ -441,6 +453,16 @@ impl MediumLevelILLiftedInstruction {
("dest", Operand::Expr(*op.dest.clone())),
("params", Operand::ExprList(op.params.clone())),
],
+ CallOutput(op) => vec![("output", Operand::VarList(op.output.clone()))],
+ CallParam(op) => vec![("params", Operand::ExprList(op.params.clone()))],
+ CallOutputSsa(op) => vec![
+ ("output", Operand::VarSsaList(op.output.clone())),
+ ("dest_memory", Operand::Int(op.dest_memory)),
+ ],
+ CallParamSsa(op) => vec![
+ ("params", Operand::ExprList(op.params.clone())),
+ ("src_memory", Operand::Int(op.src_memory)),
+ ],
Syscall(op) => vec![
("output", Operand::VarList(op.output.clone())),
("params", Operand::ExprList(op.params.clone())),
@@ -455,6 +477,16 @@ impl MediumLevelILLiftedInstruction {
("intrinsic", Operand::Intrinsic(op.intrinsic)),
("params", Operand::ExprList(op.params.clone())),
],
+ MemoryIntrinsicSsa(op) => vec![
+ ("output", Operand::Expr(*op.output.clone())),
+ ("intrinsic", Operand::Intrinsic(op.intrinsic)),
+ ("params", Operand::ExprList(op.params.clone())),
+ ("src_memory", Operand::Int(op.src_memory)),
+ ],
+ MemoryIntrinsicOutputSsa(op) => vec![
+ ("dest_memory", Operand::Int(op.dest_memory)),
+ ("output", Operand::VarSsaList(op.output.clone())),
+ ],
CallSsa(op) | TailcallSsa(op) => vec![
("output", Operand::VarSsaList(op.output.clone())),
("dest", Operand::Expr(*op.dest.clone())),