diff options
| author | Theofilos Augoustis <theofilos.augoustis@gmail.com> | 2025-10-14 09:09:29 +0000 |
|---|---|---|
| committer | Theofilos Augoustis <theofilos.augoustis@gmail.com> | 2025-10-14 09:09:29 +0000 |
| commit | 579cf1d03fb932083e6317967d1613d5c2587fb6 (patch) | |
| tree | 629f039935382a2a7391bce9253f6c9968159049 /src/miasm/ir/translators/miasm_ir.py | |
| parent | 51c15d3ea2e16d4fc5f0f01a3b9befc66b1f982e (diff) | |
| download | focaccia-miasm-ta/nix.tar.gz focaccia-miasm-ta/nix.zip | |
Convert to src-layout ta/nix
Diffstat (limited to 'src/miasm/ir/translators/miasm_ir.py')
| -rw-r--r-- | src/miasm/ir/translators/miasm_ir.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/miasm/ir/translators/miasm_ir.py b/src/miasm/ir/translators/miasm_ir.py new file mode 100644 index 00000000..a460d446 --- /dev/null +++ b/src/miasm/ir/translators/miasm_ir.py @@ -0,0 +1,45 @@ +from builtins import map +from miasm.ir.translators.translator import Translator + + +class TranslatorMiasm(Translator): + "Translate a Miasm expression to its Python building form" + + __LANG__ = "Miasm" + + def from_ExprId(self, expr): + return "ExprId(%s, size=%d)" % (repr(expr.name), expr.size) + + def from_ExprInt(self, expr): + return "ExprInt(0x%x, %d)" % (int(expr), expr.size) + + def from_ExprCond(self, expr): + return "ExprCond(%s, %s, %s)" % (self.from_expr(expr.cond), + self.from_expr(expr.src1), + self.from_expr(expr.src2)) + + def from_ExprSlice(self, expr): + return "ExprSlice(%s, %d, %d)" % (self.from_expr(expr.arg), + expr.start, + expr.stop) + + def from_ExprOp(self, expr): + return "ExprOp(%s, %s)" % ( + repr(expr.op), + ", ".join(map(self.from_expr, expr.args)) + ) + + def from_ExprCompose(self, expr): + args = ["%s" % self.from_expr(arg) for arg in expr.args] + return "ExprCompose(%s)" % ", ".join(args) + + def from_ExprAssign(self, expr): + return "ExprAssign(%s, %s)" % (self.from_expr(expr.dst), + self.from_expr(expr.src)) + + def from_ExprMem(self, expr): + return "ExprMem(%s, size=%d)" % (self.from_expr(expr.ptr), expr.size) + + +# Register the class +Translator.register(TranslatorMiasm) |