diff options
| author | serpilliere <fabrice.desclaux@cea.fr> | 2015-10-17 23:35:38 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2015-10-23 10:47:24 +0200 |
| commit | 2c9d66d7b80bbe59ebc0870bdbf703b6f0b4911c (patch) | |
| tree | e15b3fb40b54ede6b1c6aac049ec1e1559364cf4 | |
| parent | 4a493a61dc36890b12efc5a9b0dc8d47cfbe4c22 (diff) | |
| download | miasm-2c9d66d7b80bbe59ebc0870bdbf703b6f0b4911c.tar.gz miasm-2c9d66d7b80bbe59ebc0870bdbf703b6f0b4911c.zip | |
Arch/x86/sem: add pushq/popfq
| -rw-r--r-- | miasm2/arch/x86/sem.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/miasm2/arch/x86/sem.py b/miasm2/arch/x86/sem.py index 41119c13..7bf0237b 100644 --- a/miasm2/arch/x86/sem.py +++ b/miasm2/arch/x86/sem.py @@ -945,6 +945,8 @@ def compose_eflag(s=32): def pushfd(ir, instr): return push(ir, instr, compose_eflag()) +def pushfq(ir, instr): + return push(ir, instr, compose_eflag().zeroExtend(64)) def pushfw(ir, instr): return pushw(ir, instr, compose_eflag(16)) @@ -971,7 +973,7 @@ def popfd(ir, instr): e.append(m2_expr.ExprAff(vip, m2_expr.ExprSlice(tmp, 20, 21))) e.append(m2_expr.ExprAff(i_d, m2_expr.ExprSlice(tmp, 21, 22))) e.append(m2_expr.ExprAff(mRSP[instr.mode], - mRSP[instr.mode] + m2_expr.ExprInt32(4))) + mRSP[instr.mode] + m2_expr.ExprInt_from(mRSP[instr.mode], instr.mode/8))) e.append(m2_expr.ExprAff(exception_flags, m2_expr.ExprCond(m2_expr.ExprSlice(tmp, 8, 9), m2_expr.ExprInt32(EXCEPT_SOFT_BP), @@ -3352,8 +3354,10 @@ mnemo_func = {'mov': mov, 'scasw': lambda ir, instr: scas(ir, instr, 16), 'scasd': lambda ir, instr: scas(ir, instr, 32), 'pushfd': pushfd, + 'pushfq': pushfq, 'pushfw': pushfw, 'popfd': popfd, + 'popfq': popfd, 'popfw': popfw, 'pushad': pushad, 'pusha': pushad, |