From 382dc70367803b3863394fc4d5505923f1789281 Mon Sep 17 00:00:00 2001 From: Henny Sipma Date: Mon, 11 Aug 2025 23:52:06 -0700 Subject: [PATCH] CHB:ARM: limited support for rotate operand --- CodeHawk/CHB/bchlib/bCHVersion.ml | 4 ++-- CodeHawk/CHB/bchlibarm32/bCHARMOperand.ml | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CodeHawk/CHB/bchlib/bCHVersion.ml b/CodeHawk/CHB/bchlib/bCHVersion.ml index 7cad9618..610ce036 100644 --- a/CodeHawk/CHB/bchlib/bCHVersion.ml +++ b/CodeHawk/CHB/bchlib/bCHVersion.ml @@ -95,8 +95,8 @@ end let version = new version_info_t - ~version:"0.6.0_20250810" - ~date:"2025-08-10" + ~version:"0.6.0_20250811" + ~date:"2025-08-11" ~licensee: None ~maxfilesize: None () diff --git a/CodeHawk/CHB/bchlibarm32/bCHARMOperand.ml b/CodeHawk/CHB/bchlibarm32/bCHARMOperand.ml index 89627ef5..8c31b4b6 100644 --- a/CodeHawk/CHB/bchlibarm32/bCHARMOperand.ml +++ b/CodeHawk/CHB/bchlibarm32/bCHARMOperand.ml @@ -624,6 +624,9 @@ object (self:'a) | ARMShiftedReg (r, ARMImmSRT (SRType_LSL, n)) -> let vreg = floc#env#mk_arm_register_variable r in Ok (XOp (XLsl, [XVar vreg; int_constant_expr n])) + | ARMShiftedReg (r, ARMImmSRT (SRType_ROR, n)) -> + let vreg = floc#env#mk_arm_register_variable r in + Ok (XOp ((Xf "ror"), [XVar vreg; int_constant_expr n])) | ARMShiftedReg (r, ARMRegSRT (SRType_LSL, sr)) -> let vsreg = floc#env#mk_arm_register_variable sr in let vreg = floc#env#mk_arm_register_variable r in @@ -633,6 +636,14 @@ object (self:'a) let vsreg = floc#env#mk_arm_register_variable sr in let vreg = floc#env#mk_arm_register_variable r in Ok (XOp (XLsr, [XVar vreg; XVar vsreg])) + | ARMShiftedReg (r, ARMRegSRT (SRType_ASR, sr)) -> + let vsreg = floc#env#mk_arm_register_variable sr in + let vreg = floc#env#mk_arm_register_variable r in + Ok (XOp (XAsr, [XVar vreg; XVar vsreg])) + | ARMShiftedReg (r, ARMRegSRT (SRType_ROR, sr)) -> + let vsreg = floc#env#mk_arm_register_variable sr in + let vreg = floc#env#mk_arm_register_variable r in + Ok (XOp ((Xf "ror"), [XVar vreg; XVar vsreg])) | ARMShiftedReg (_, srt) -> Error [__FILE__ ^ ":" ^ (string_of_int __LINE__) ^ ": " ^ "Shifted reg: " ^ (register_shift_to_string srt)