From 0cbc83be3fb0f4293146def0c3735f39608f646b Mon Sep 17 00:00:00 2001 From: _xeroxz Date: Tue, 10 Aug 2021 13:13:43 -0700 Subject: [PATCH] added code for sign extending imm's --- src/vminstrs.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/vminstrs.cpp b/src/vminstrs.cpp index 49e1270..6573dd3 100644 --- a/src/vminstrs.cpp +++ b/src/vminstrs.cpp @@ -194,6 +194,16 @@ namespace vm::instrs vm::instrs::decrypt_operand( vm_handler.transforms, imm_val.value(), entry.decrypt_key ).first; } + if ( profile && vm_handler.imm_size && profile->extention == vm::handler::extention_t::sign_extend ) + { + if ( result.operand.imm.u >> ( vm_handler.imm_size - 1 ) ) + { + result.operand.imm.u = + ( ( std::numeric_limits< std::uint64_t >::max() >> vm_handler.imm_size ) << vm_handler.imm_size ) + + result.operand.imm.u; + } + } + return result; }