aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2026-04-19 16:35:41 +0000
committeriximeow <me@iximeow.net>2026-05-25 00:59:27 +0000
commitcabd41fd8c255a464c1436ac502a2317773a83b6 (patch)
tree64423bc8a0ad1a8a5c1153143f5b1315cd344af1
parentbbdb82bd41234021cc8dbe3337e88bd9f19cade9 (diff)
report memory access size for "monitor"
-rw-r--r--CHANGELOG1
-rw-r--r--src/long_mode/mod.rs1
-rw-r--r--src/protected_mode/mod.rs1
-rw-r--r--src/real_mode/mod.rs1
4 files changed, 4 insertions, 0 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 39ce6af..b516dc0 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -20,6 +20,7 @@
is unchanged and uses a 16-bit form for source GPR.
* reject 0f0d prefetch/nop with a register operand, which was incorrectly decoded before.
* maskmovq and maskmovdqu now have their implicit memory access size reported correctly.
+* monitor now reports a 1-byte memory access size. the monitored range in practice depends on CPUID.
## 2.0.0
diff --git a/src/long_mode/mod.rs b/src/long_mode/mod.rs
index 264e2d3..5123ff5 100644
--- a/src/long_mode/mod.rs
+++ b/src/long_mode/mod.rs
@@ -8288,6 +8288,7 @@ fn read_operands<
match m {
0b000 => {
instruction.opcode = Opcode::MONITOR;
+ instruction.mem_size = 1;
}
0b001 => {
instruction.opcode = Opcode::MWAIT;
diff --git a/src/protected_mode/mod.rs b/src/protected_mode/mod.rs
index 0cb6674..4581485 100644
--- a/src/protected_mode/mod.rs
+++ b/src/protected_mode/mod.rs
@@ -8083,6 +8083,7 @@ fn read_operands<
match m {
0b000 => {
instruction.opcode = Opcode::MONITOR;
+ instruction.mem_size = 1;
}
0b001 => {
instruction.opcode = Opcode::MWAIT;
diff --git a/src/real_mode/mod.rs b/src/real_mode/mod.rs
index 930d450..3fbb99a 100644
--- a/src/real_mode/mod.rs
+++ b/src/real_mode/mod.rs
@@ -8128,6 +8128,7 @@ fn read_operands<
match m {
0b000 => {
instruction.opcode = Opcode::MONITOR;
+ instruction.mem_size = 1;
}
0b001 => {
instruction.opcode = Opcode::MWAIT;