diff options
author | iximeow <me@iximeow.net> | 2021-07-22 00:31:02 -0700 |
---|---|---|
committer | iximeow <me@iximeow.net> | 2021-07-22 00:31:02 -0700 |
commit | 4371ed02ac30cb56ec4ddbf60c87e85c183d860b (patch) | |
tree | b24673d757b41cd58966fc0e8ea472cd9b6e6fb0 /CHANGELOG | |
parent | a3c2c7486ef6830751fd0a5e2a6cb91b432f28a5 (diff) |
fix incorrect decodes with scas and 67-prefixes1.0.4
Diffstat (limited to 'CHANGELOG')
-rw-r--r-- | CHANGELOG | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -1,3 +1,21 @@ +## 1.0.4 + +in 64-, 32-, and 16-bit modes: + * fix incorrect decoding of `scas`; memory access is through `*di` not `*si`. + * fix incorrect segment register for `scas` memory operand; `es` segment is always used. + * fix incorrect decoding of some 67-prefixed string instructions: `movs`, `scas`, `lods`, `stos`, `cmps`. + - a 67-prefix selects an alternate addressing mode. in 64-bit mode, this + selects 32-bit registers for addressing, 32-bit selects 16-bit registers, + and 16-bit selects 32-bit registers. the decoder had ignored the 67 prefix + on these instructions. + +in 32- and 16-bit modes: + * fix incorrect decoding of 16-bit memory accesses with modrm where mod=00 and mmm=110. + - the memory access from this modrm is a disp16 memory access, which the + decoder reports. the decoder would then not read the subsequent 16-bit + displacement. this would typically result in a `Displacement(0)` operand, + and incorrect following instructions. + ## 1.0.3 * fix a few broken doc links, added example of yaxpeax-x86 usage through yaxpeax-arch traits |