mirror of
https://github.com/cea-sec/miasm
synced 2026-08-17 10:26:03 -04:00
Add missing == operator in translators
This commit is contained in:
parent
340429eb41
commit
f6804c42ec
3 changed files with 20 additions and 0 deletions
|
|
@ -45,3 +45,14 @@ print("-> 0x%x" % eval(target_exprs["Python"]))
|
|||
print("[+] Validate the Miasm syntax rebuilding")
|
||||
exprRebuild = eval(target_exprs["Miasm"])
|
||||
assert(expr == exprRebuild)
|
||||
|
||||
|
||||
a = ExprId("a", 32)
|
||||
b = ExprId("b", 32)
|
||||
cst1 = ExprInt(1, 32)
|
||||
eq_test = ExprOp("==", a, b + cst1)
|
||||
|
||||
for lang in Translator.available_languages():
|
||||
translator = Translator.to_language(lang)
|
||||
print("Translate to %s:" % lang)
|
||||
print(translator.from_expr(eq_test))
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
from builtins import map
|
||||
from miasm.expression.expression import ExprInt
|
||||
from miasm.ir.translators.translator import Translator
|
||||
from miasm.expression.expression import ExprCond, ExprInt
|
||||
|
||||
|
||||
class TranslatorPython(Translator):
|
||||
|
|
@ -71,6 +72,10 @@ class TranslatorPython(Translator):
|
|||
)
|
||||
elif expr.op == "parity":
|
||||
return "(%s & 0x1)" % self.from_expr(expr.args[0])
|
||||
elif expr.op == "==":
|
||||
return self.from_expr(
|
||||
ExprCond(expr.args[0] - expr.args[1], ExprInt(0, 1), ExprInt(1, 1))
|
||||
)
|
||||
|
||||
elif expr.op in ["<<<", ">>>"]:
|
||||
amount_raw = expr.args[1]
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ import logging
|
|||
|
||||
from miasm.ir.translators.translator import Translator
|
||||
from miasm.expression.smt2_helper import *
|
||||
from miasm.expression.expression import ExprCond, ExprInt
|
||||
|
||||
|
||||
log = logging.getLogger("translator_smt2")
|
||||
console_handler = logging.StreamHandler()
|
||||
|
|
@ -226,6 +228,8 @@ class TranslatorSMT2(Translator):
|
|||
res = bv_rotate_left(res, arg, expr.size)
|
||||
elif expr.op == ">>>":
|
||||
res = bv_rotate_right(res, arg, expr.size)
|
||||
elif expr.op == "==":
|
||||
res = self.from_expr(ExprCond(expr.args[0] - expr.args[1], ExprInt(0, 1), ExprInt(1, 1)))
|
||||
else:
|
||||
raise NotImplementedError("Unsupported OP yet: %s" % expr.op)
|
||||
elif expr.op == 'parity':
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue