about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2018-04-19 13:53:25 +0200
committerGitHub <noreply@github.com>2018-04-19 13:53:25 +0200
commitcc6b1ae498d6a4b876c14e274f852be76a7be080 (patch)
treec91e75be39da1b2a12122bbe954fe62f9730db9e
parent46abbce25653c99f2d73270b4f3eb3ec50bd36b4 (diff)
parent398e7b72bded9e022ed39d32f38199fe079f082d (diff)
downloadmiasm-cc6b1ae498d6a4b876c14e274f852be76a7be080.tar.gz
miasm-cc6b1ae498d6a4b876c14e274f852be76a7be080.zip
Merge pull request #720 from su-vikas/master
Added support to parse  sxtb, sxth, sxtx, uxtw, uxth, uxtx, uxtb
-rw-r--r--miasm2/arch/aarch64/sem.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/miasm2/arch/aarch64/sem.py b/miasm2/arch/aarch64/sem.py
index 2799df7a..88b0d0a7 100644
--- a/miasm2/arch/aarch64/sem.py
+++ b/miasm2/arch/aarch64/sem.py
@@ -124,9 +124,32 @@ def extend_arg(dst, arg):
         return arg
 
     op, (reg, shift) = arg.op, arg.args
-    if op == 'SXTW':
+    if op == "SXTB":
+        base = reg[:8].signExtend(dst.size)
+        op = "<<"
+    elif op == "SXTH":
+        base = reg[:16].signExtend(dst.size)
+        op = "<<"
+    elif op == 'SXTW':
+        base = reg[:32].signExtend(dst.size)
+        op = "<<"
+    elif op == "SXTX":
         base = reg.signExtend(dst.size)
         op = "<<"
+
+    elif op == "UXTB":
+        base = reg[:8].zeroExtend(dst.size)
+        op = "<<"
+    elif op == "UXTH":
+        base = reg[:16].zeroExtend(dst.size)
+        op = "<<"
+    elif op == 'UXTW':
+        base = reg[:32].zeroExtend(dst.size)
+        op = "<<"
+    elif op == "UXTX":
+        base = reg.zeroExtend(dst.size)
+        op = "<<"
+
     elif op in ['<<', '>>', '<<a', 'a>>', '<<<', '>>>']:
         base = reg.zeroExtend(dst.size)
     else: