diff options
Diffstat (limited to 'miasm2/arch/x86/sem.py')
| -rw-r--r-- | miasm2/arch/x86/sem.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/miasm2/arch/x86/sem.py b/miasm2/arch/x86/sem.py index 12f2ef2a..1fceab30 100644 --- a/miasm2/arch/x86/sem.py +++ b/miasm2/arch/x86/sem.py @@ -16,6 +16,7 @@ # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # +import logging import miasm2.expression.expression as m2_expr from miasm2.expression.simplifications import expr_simp from miasm2.arch.x86.regs import * @@ -29,6 +30,13 @@ import math import struct +LOG_X86_SEM = logging.getLogger("x86_sem") +CONSOLE_HANDLER = logging.StreamHandler() +CONSOLE_HANDLER.setFormatter(logging.Formatter("%(levelname)-5s: %(message)s")) +LOG_X86_SEM.addHandler(CONSOLE_HANDLER) +LOG_X86_SEM.setLevel(logging.WARNING) + + # SemBuilder context ctx = {'mRAX': mRAX, 'mRBX': mRBX, @@ -2833,7 +2841,7 @@ def sidt(ir, instr, dst): if not isinstance(dst, m2_expr.ExprMem) or dst.size != 32: raise ValueError('not exprmem 32bit instance!!') ptr = dst.arg - print "DEFAULT SIDT ADDRESS %s!!" % str(dst) + LOG_X86_SEM.warning("DEFAULT SIDT ADDRESS %s!!", str(dst)) e.append(m2_expr.ExprAff(ir.ExprMem(ptr, 32), m2_expr.ExprInt(0xe40007ff, 32))) e.append( @@ -2843,7 +2851,7 @@ def sidt(ir, instr, dst): def sldt(_, instr, dst): - print "DEFAULT SLDT ADDRESS %s!!" % str(dst) + LOG_X86_SEM.warning("DEFAULT SLDT ADDRESS %s!!", str(dst)) e = [m2_expr.ExprAff(dst, m2_expr.ExprInt(0, dst.size))] return e, [] @@ -4047,6 +4055,14 @@ def pmovmskb(_, instr, dst, src): return e, [] +def smsw(ir, instr, dst): + e = [] + LOG_X86_SEM.warning("DEFAULT SMSW %s!!", str(dst)) + e.append(m2_expr.ExprAff(dst, m2_expr.ExprInt(0x80050033, 32)[:dst.size])) + return e, [] + + + mnemo_func = {'mov': mov, 'xchg': xchg, 'movzx': movzx, @@ -4530,6 +4546,8 @@ mnemo_func = {'mov': mov, "pmovmskb": pmovmskb, + "smsw": smsw, + } |