about summary refs log tree commit diff stats
path: root/miasm2/ir/translators/C.py
diff options
context:
space:
mode:
authorAjax <commial@gmail.com>2018-08-30 14:42:08 +0200
committerAjax <commial@gmail.com>2018-09-03 19:07:21 +0200
commitecf6cac84d3330c923a6c65bb424e2911f9065a6 (patch)
treed1f859ada761e3abe2391b161661d84d6eacff16 /miasm2/ir/translators/C.py
parent579d439700d1944f067a2c28d4aa9ea6736d631a (diff)
downloadmiasm-ecf6cac84d3330c923a6c65bb424e2911f9065a6.tar.gz
miasm-ecf6cac84d3330c923a6c65bb424e2911f9065a6.zip
Add support for more FP operations, expand fxam
Diffstat (limited to 'miasm2/ir/translators/C.py')
-rw-r--r--miasm2/ir/translators/C.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/miasm2/ir/translators/C.py b/miasm2/ir/translators/C.py
index 6700e826..71f42636 100644
--- a/miasm2/ir/translators/C.py
+++ b/miasm2/ir/translators/C.py
@@ -327,9 +327,16 @@ class TranslatorC(Translator):
                 return "%s(%s, %s)" % (expr.op,
                                        self.from_expr(expr.args[0]),
                                        self.from_expr(expr.args[1]))
-            elif (expr.op.startswith("fcom")  or
-                  expr.op in ["fadd", "fsub", "fdiv", 'fmul', "fscale",
-                              "fprem", "fprem_lsb", "fyl2x", "fpatan"]):
+            elif expr.op.startswith("fcom"):
+                arg0 = self.from_expr(expr.args[0])
+                arg1 = self.from_expr(expr.args[1])
+                if not expr.args[0].size <= self.NATIVE_INT_MAX_SIZE:
+                    raise ValueError("Bad semantic: fpu do operations do not support such size")
+                out = "fpu_%s(%s, %s)" % (expr.op, arg0, arg1)
+                return out
+
+            elif expr.op in ["fadd", "fsub", "fdiv", 'fmul', "fscale",
+                             "fprem", "fyl2x", "fpatan"]:
                 arg0 = self.from_expr(expr.args[0])
                 arg1 = self.from_expr(expr.args[1])
                 if not expr.args[0].size <= self.NATIVE_INT_MAX_SIZE: