about summary refs log tree commit diff stats
path: root/miasm2/arch/arm/sem.py
diff options
context:
space:
mode:
Diffstat (limited to 'miasm2/arch/arm/sem.py')
-rw-r--r--miasm2/arch/arm/sem.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/miasm2/arch/arm/sem.py b/miasm2/arch/arm/sem.py
index 437303f3..b5ab60d0 100644
--- a/miasm2/arch/arm/sem.py
+++ b/miasm2/arch/arm/sem.py
@@ -1190,6 +1190,12 @@ def uxtab(ir, instr, a, b, c):
     return e, []
 
 
+def uxtah(ir, instr, a, b, c):
+    e = []
+    e.append(ExprAssign(a, b + (c & ExprInt(0xffff, 32))))
+    return e, []
+
+
 def bkpt(ir, instr, a):
     e = []
     e.append(ExprAssign(exception_flags, ExprInt(EXCEPT_SOFT_BP, 32)))
@@ -1294,6 +1300,13 @@ def rev(ir, instr, a, b):
     return e, []
 
 
+def rev16(ir, instr, a, b):
+    e = []
+    result = ExprCompose(b[8:16], b[:8], b[24:32], b[16:24])
+    e.append(ExprAssign(a, result))
+    return e, []
+
+
 def nop(ir, instr):
     e = []
     return e, []
@@ -1328,6 +1341,10 @@ def wfi(ir, instr):
     e = []
     return e, []
 
+def adr(ir, instr, arg1, arg2):
+    e = []
+    e.append(ExprAssign(arg1, (PC & ExprInt(0xfffffffc, 32)) + arg2))
+    return e, []
 
 COND_EQ = 0
 COND_NE = 1
@@ -1494,8 +1511,10 @@ mnemo_condm0 = {'add': add,
                 'ubfx': ubfx,
                 'bfc': bfc,
                 'rev': rev,
+                'rev16': rev16,
                 'clz': clz,
                 'uxtab': uxtab,
+                'uxtah': uxtah,
                 'bkpt': bkpt,
                 'smulbb': smul,
                 'smulbt': smul,
@@ -1579,6 +1598,7 @@ mnemo_nocond = {'lsr': lsr,
                 'cpsid': cpsid,
                 'wfe': wfe,
                 'wfi': wfi,
+                'adr': adr,
                 'orn': orn,
                 'smlabb': smlabb,
                 'smlabt': smlabt,