summaryrefslogtreecommitdiff
path: root/rust/src/high_level_il/instruction.rs
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2025-12-23 13:12:02 -0700
committerRusty Wagner <rusty.wagner@gmail.com>2026-05-22 16:30:56 -0400
commit8d621c51b2797fda7b1dc22243dde611cfc04f68 (patch)
treeba5e6a90e644d21d13e75dabcbd0cc747444443a /rust/src/high_level_il/instruction.rs
parent08e34ac325743085911f96b62c81d9a1f2127806 (diff)
Refactor calling conventions to support correct representation of structures
Diffstat (limited to 'rust/src/high_level_il/instruction.rs')
-rw-r--r--rust/src/high_level_il/instruction.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/rust/src/high_level_il/instruction.rs b/rust/src/high_level_il/instruction.rs
index 80be2a16..98839cae 100644
--- a/rust/src/high_level_il/instruction.rs
+++ b/rust/src/high_level_il/instruction.rs
@@ -400,6 +400,12 @@ impl HighLevelILInstruction {
HLIL_ADDRESS_OF => Op::AddressOf(UnaryOp {
src: HighLevelExpressionIndex::from(op.operands[0]),
}),
+ HLIL_PASS_BY_REF => Op::PassByRef(UnaryOp {
+ src: HighLevelExpressionIndex::from(op.operands[0]),
+ }),
+ HLIL_RETURN_BY_REF => Op::ReturnByRef(UnaryOp {
+ src: HighLevelExpressionIndex::from(op.operands[0]),
+ }),
HLIL_NEG => Op::Neg(UnaryOp {
src: HighLevelExpressionIndex::from(op.operands[0]),
}),
@@ -784,6 +790,8 @@ impl HighLevelILInstruction {
Deref(op) => Lifted::Deref(self.lift_unary_op(op)),
AddressOf(op) => Lifted::AddressOf(self.lift_unary_op(op)),
+ PassByRef(op) => Lifted::PassByRef(self.lift_unary_op(op)),
+ ReturnByRef(op) => Lifted::ReturnByRef(self.lift_unary_op(op)),
Neg(op) => Lifted::Neg(self.lift_unary_op(op)),
Not(op) => Lifted::Not(self.lift_unary_op(op)),
Sx(op) => Lifted::Sx(self.lift_unary_op(op)),
@@ -1161,6 +1169,8 @@ pub enum HighLevelILInstructionKind {
ConstData(ConstData),
Deref(UnaryOp),
AddressOf(UnaryOp),
+ PassByRef(UnaryOp),
+ ReturnByRef(UnaryOp),
Neg(UnaryOp),
Not(UnaryOp),
Sx(UnaryOp),