aboutsummaryrefslogtreecommitdiff
path: root/src/long_mode
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2021-08-22 10:46:32 -0700
committeriximeow <me@iximeow.net>2021-08-22 10:46:32 -0700
commit188cf391845a7d86466cd2ad35459b6bf825bb1e (patch)
tree82eb9bc7e76841691d2350c3d1e1772e3afa8a55 /src/long_mode
parent39eef01e04e478ec5cfa3c8f520c831631ecd67d (diff)
add 16/32-bit opcode/operand boundary desc, consistentify memory descriptions
Diffstat (limited to 'src/long_mode')
-rw-r--r--src/long_mode/mod.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/long_mode/mod.rs b/src/long_mode/mod.rs
index dee759d..97ac8d1 100644
--- a/src/long_mode/mod.rs
+++ b/src/long_mode/mod.rs
@@ -6005,7 +6005,7 @@ fn read_M<
sink.record(
modrm_start + 6,
modrm_start + 7,
- InnerDescription::Misc("mmm field is a simple register dereference (mod bits: 00)")
+ InnerDescription::Misc("memory operand is [reg] with no displacement, register selected by `mmm` (mod bits: 00)")
.with_id(modrm_start + 0)
);
OperandSpec::Deref
@@ -7643,7 +7643,13 @@ fn read_with_annotations<
0x26 |
0x2e |
0x36 |
- 0x3e =>{ /* no-op in amd64 */ },
+ 0x3e => {
+ /* no-op in amd64 */
+ sink.record((words.offset() - 2) as u32 * 8, (words.offset() - 2) as u32 * 8 + 7, FieldDescription {
+ desc: InnerDescription::Misc("ignored prefix in 64-bit mode"),
+ id: words.offset() as u32 * 8 - 16,
+ });
+ },
0x64 => {
sink.record((words.offset() - 2) as u32 * 8, (words.offset() - 2) as u32 * 8 + 7, FieldDescription {
desc: InnerDescription::SegmentPrefix(Segment::FS),