diff options
| author | GAJaloyan <none@none> | 2018-01-12 17:03:09 +0100 |
|---|---|---|
| committer | GAJaloyan <none@none> | 2018-01-12 17:03:09 +0100 |
| commit | a61c8a7658752f3bba2e7f429648cd994478d600 (patch) | |
| tree | fa9f5de15a8b23897522023f6b005f2edb60cdba | |
| parent | fef46ebaf5e72cf539528d99548ca3d32009a9d7 (diff) | |
| download | miasm-a61c8a7658752f3bba2e7f429648cd994478d600.tar.gz miasm-a61c8a7658752f3bba2e7f429648cd994478d600.zip | |
adding ucomisd
Diffstat (limited to '')
| -rw-r--r-- | miasm2/arch/x86/sem.py | 16 | ||||
| -rw-r--r-- | miasm2/expression/expression.py | 3 |
2 files changed, 18 insertions, 1 deletions
diff --git a/miasm2/arch/x86/sem.py b/miasm2/arch/x86/sem.py index ccf8d1fd..f2b75d03 100644 --- a/miasm2/arch/x86/sem.py +++ b/miasm2/arch/x86/sem.py @@ -3671,6 +3671,21 @@ def ucomiss(_, instr, src1, src2): return e, [] +def ucomisd(_, instr, src1, src2): + e = [] + e.append(m2_expr.ExprAff(zf, m2_expr.ExprOp( + 'ucomisd_zf', src1[:64], src2[:64]))) + e.append(m2_expr.ExprAff(pf, m2_expr.ExprOp( + 'ucomisd_pf', src1[:64], src2[:64]))) + e.append(m2_expr.ExprAff(cf, m2_expr.ExprOp( + 'ucomisd_cf', src1[:64], src2[:64]))) + + e.append(m2_expr.ExprAff(of, m2_expr.ExprInt(0, 1))) + e.append(m2_expr.ExprAff(af, m2_expr.ExprInt(0, 1))) + e.append(m2_expr.ExprAff(nf, m2_expr.ExprInt(0, 1))) + + return e, [] + def pshufb(_, instr, dst, src): e = [] @@ -4478,6 +4493,7 @@ mnemo_func = {'mov': mov, "movss": movss, "ucomiss": ucomiss, + "ucomisd": ucomisd, # # MMX/AVX/SSE operations diff --git a/miasm2/expression/expression.py b/miasm2/expression/expression.py index d31c509c..6b189c4d 100644 --- a/miasm2/expression/expression.py +++ b/miasm2/expression/expression.py @@ -900,7 +900,8 @@ class ExprOp(Expr): '==', 'parity', 'fcom_c0', 'fcom_c1', 'fcom_c2', 'fcom_c3', 'fxam_c0', 'fxam_c1', 'fxam_c2', 'fxam_c3', "access_segment_ok", "load_segment_limit_ok", "bcdadd_cf", - "ucomiss_zf", "ucomiss_pf", "ucomiss_cf"]: + "ucomiss_zf", "ucomiss_pf", "ucomiss_cf", + "ucomisd_zf", "ucomisd_pf", "ucomisd_cf"]: size = 1 elif self._op in [TOK_INF, TOK_INF_SIGNED, TOK_INF_UNSIGNED, TOK_INF_EQUAL, |