mirror of
https://github.com/bitdefender/bddisasm.git
synced 2024-12-22 14:08:08 +00:00
Make sure upper 32 bit of a CMOV destination register is cleared to 0 even if the condition is not satisfied
This commit is contained in:
parent
1805a9edec
commit
6dda2c122c
@ -1882,11 +1882,18 @@ ShemuEmulate(
|
||||
break;
|
||||
|
||||
case ND_INS_CMOVcc:
|
||||
GET_OP(Context, 0, &dst);
|
||||
GET_OP(Context, 1, &src);
|
||||
if (ShemuEvalCondition(Context, Context->Instruction.Condition))
|
||||
{
|
||||
GET_OP(Context, 1, &src);
|
||||
SET_OP(Context, 0, &src);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Write back the same value that was already present in destination. This has the side-effect of
|
||||
// clearing the upper 32 bit in the 64 bit destination register while in long mode.
|
||||
SET_OP(Context, 0, &dst);
|
||||
}
|
||||
break;
|
||||
|
||||
case ND_INS_SETcc:
|
||||
|
Binary file not shown.
@ -12,7 +12,7 @@ from setuptools import find_packages, setup, Command, Extension, Distribution
|
||||
from codecs import open
|
||||
|
||||
VERSION = (0, 1, 3)
|
||||
LIBRARY_VERSION = (1, 34, 15)
|
||||
LIBRARY_VERSION = (1, 34, 16)
|
||||
LIBRARY_INSTRUX_SIZE = 856
|
||||
|
||||
packages = ['pybddisasm']
|
||||
|
@ -7,6 +7,6 @@
|
||||
|
||||
#define DISASM_VERSION_MAJOR 1
|
||||
#define DISASM_VERSION_MINOR 34
|
||||
#define DISASM_VERSION_REVISION 15
|
||||
#define DISASM_VERSION_REVISION 16
|
||||
|
||||
#endif // DISASM_VER_H
|
||||
|
Loading…
Reference in New Issue
Block a user