diff options
| author | Ajax <commial@gmail.com> | 2018-08-30 14:42:08 +0200 |
|---|---|---|
| committer | Ajax <commial@gmail.com> | 2018-09-03 19:07:21 +0200 |
| commit | ecf6cac84d3330c923a6c65bb424e2911f9065a6 (patch) | |
| tree | d1f859ada761e3abe2391b161661d84d6eacff16 /miasm2/ir/translators/C.py | |
| parent | 579d439700d1944f067a2c28d4aa9ea6736d631a (diff) | |
| download | miasm-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.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: |