diff options
Diffstat (limited to '')
| -rw-r--r-- | miasm2/arch/arm/arch.py | 6 | ||||
| -rw-r--r-- | test/arch/arm/arch.py | 3 |
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"), |