about summary refs log tree commit diff stats
path: root/miasm2/ir/translators/C.py
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2015-02-20 14:02:20 +0100
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2015-02-20 14:02:20 +0100
commit82d3e73cd19f3638265d35f765cdab1dc13d1ddb (patch)
treed2c4a568c9fd9aea904b92e1bcbeb770e8dddbb5 /miasm2/ir/translators/C.py
parent736befb2b6fab02e601eae392a9969ac91f2caa3 (diff)
downloadmiasm-82d3e73cd19f3638265d35f765cdab1dc13d1ddb.tar.gz
miasm-82d3e73cd19f3638265d35f765cdab1dc13d1ddb.zip
X86: fix bsr/bsf behaviour as issued in PR #79
Diffstat (limited to '')
-rw-r--r--miasm2/ir/translators/C.py8
1 files changed, 4 insertions, 4 deletions
diff --git a/miasm2/ir/translators/C.py b/miasm2/ir/translators/C.py
index a730b1d8..007f8378 100644
--- a/miasm2/ir/translators/C.py
+++ b/miasm2/ir/translators/C.py
@@ -59,6 +59,10 @@ class TranslatorC(Translator):
             if expr.op == 'parity':
                 return "parity(%s&0x%x)" % (cls.from_expr(expr.args[0]),
                                             size2mask(expr.args[0].size))
+            elif expr.op in ['bsr', 'bsf']:
+                return "x86_%s(%s, 0x%x)" % (expr.op,
+                                             cls.from_expr(expr.args[0]),
+                                             expr.args[0].size)
             elif expr.op == '!':
                 return "(~ %s)&0x%x" % (cls.from_expr(expr.args[0]),
                                         size2mask(expr.args[0].size))
@@ -102,10 +106,6 @@ class TranslatorC(Translator):
                                                    cls.from_expr(expr.args[0]),
                                                    cls.from_expr(expr.args[1]),
                                                    size2mask(expr.args[0].size))
-            elif expr.op in ['bsr', 'bsf']:
-                return 'my_%s(%s, %s)' % (expr.op,
-                                          cls.from_expr(expr.args[0]),
-                                          cls.from_expr(expr.args[1]))
             elif (expr.op.startswith('cpuid') or
                   expr.op.startswith("fcom")  or
                   expr.op in ["fadd", "fsub", "fdiv", 'fmul', "fscale"]):