about summary refs log tree commit diff stats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--miasm2/arch/arm/arch.py6
-rw-r--r--test/arch/arm/arch.py3
2 files changed, 5 insertions, 4 deletions
diff --git a/miasm2/arch/arm/arch.py b/miasm2/arch/arm/arch.py
index 202b1f52..0e058e91 100644
--- a/miasm2/arch/arm/arch.py
+++ b/miasm2/arch/arm/arch.py
@@ -2449,7 +2449,7 @@ class armt2_imm12(arm_imm):
             self.expr = ExprInt((v << 24) | (v << 16) | (v << 8) | v, 32)
             return True
         r = v >> 7
-        v = v & 0xFF
+        v = 0x80 | (v & 0x7F)
         self.expr = ExprInt(myror32(v, r), 32)
         return True
 
@@ -2477,8 +2477,8 @@ class armt2_imm12(arm_imm):
             # rol encoding
             for i in xrange(32):
                 o = myrol32(v, i)
-                if 0 <= o < 0x100 and o & 0x80:
-                    value = (i << 7) | o
+                if 0x80 <= o <= 0xFF:
+                    value = (i << 7) | (o & 0x7F)
                     break
         if value is None:
             log.debug('cannot encode imm12')
diff --git a/test/arch/arm/arch.py b/test/arch/arm/arch.py
index 19756221..e50a9f54 100644
--- a/test/arch/arm/arch.py
+++ b/test/arch/arm/arch.py
@@ -561,7 +561,8 @@ reg_tests_armt = [
     ("xxxxxxxx    ADD        R3, R3, 0x908",
      "03F60813"),
 
-
+    ("xxxxxxxx    ADD        R3, R3, 0x23800",
+     "03F50E33"),