diff options
Diffstat (limited to '')
| -rw-r--r-- | miasm2/ir/translators/C.py | 13 |
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: |