diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2017-12-30 15:53:47 +0100 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2017-12-30 16:46:55 +0100 |
| commit | f6483d9dabc4ea85a9f8e293128cb84d5b9cfe8b (patch) | |
| tree | 0529b844818fbdf7c2a9cab7373f9a9a829f3e7b /miasm2/arch | |
| parent | 2df9301ba6af51f16724358517e4942e2152a87e (diff) | |
| download | miasm-f6483d9dabc4ea85a9f8e293128cb84d5b9cfe8b.tar.gz miasm-f6483d9dabc4ea85a9f8e293128cb84d5b9cfe8b.zip | |
X86: fix rdmsr/wrmsr semantic
Diffstat (limited to '')
| -rw-r--r-- | miasm2/arch/x86/sem.py | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/miasm2/arch/x86/sem.py b/miasm2/arch/x86/sem.py index cb70b890..ccf8d1fd 100644 --- a/miasm2/arch/x86/sem.py +++ b/miasm2/arch/x86/sem.py @@ -3275,23 +3275,17 @@ def xorps(_, instr, dst, src): def rdmsr(ir, instr): - msr_addr = m2_expr.ExprId('MSR') + m2_expr.ExprInt( - 0, - 8) * mRCX[instr.mode][:32] + msr_addr = m2_expr.ExprId('MSR', 64) + m2_expr.ExprInt(8, 64) * mRCX[32].zeroExtend(64) e = [] - e.append( - m2_expr.ExprAff(mRAX[instr.mode][:32], ir.ExprMem(msr_addr, 32))) - e.append(m2_expr.ExprAff(mRDX[instr.mode][:32], m2_expr.ExprMem( - msr_addr + m2_expr.ExprInt(4, msr_addr.size), 32))) + e.append(m2_expr.ExprAff(mRAX[32], ir.ExprMem(msr_addr, 32))) + e.append(m2_expr.ExprAff(mRDX[32], ir.ExprMem(msr_addr + m2_expr.ExprInt(4, 64), 32))) return e, [] def wrmsr(ir, instr): - msr_addr = m2_expr.ExprId('MSR') + m2_expr.ExprInt( - 8, - 32) * mRCX[instr.mode][:32] + msr_addr = m2_expr.ExprId('MSR', 64) + m2_expr.ExprInt(8, 64) * mRCX[32].zeroExtend(64) e = [] - src = m2_expr.ExprCompose(mRAX[instr.mode][:32], mRDX[instr.mode][:32]) + src = m2_expr.ExprCompose(mRAX[32], mRDX[32]) e.append(m2_expr.ExprAff(ir.ExprMem(msr_addr, 64), src)) return e, [] |