aboutsummaryrefslogtreecommitdiff
path: root/src/long_mode
diff options
context:
space:
mode:
authoriximeow <me@iximeow.net>2020-08-03 00:57:45 -0700
committeriximeow <me@iximeow.net>2020-08-09 01:38:57 -0700
commit200447fed7f7fffa6c13360375b99b8d675b81ac (patch)
tree3cd135e78caeeebcf8349ddeaeafe590841848d1 /src/long_mode
parent959c61e28e05a37aa19cc226d0f5b525610d47d7 (diff)
more pop
Diffstat (limited to 'src/long_mode')
-rw-r--r--src/long_mode/mod.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/long_mode/mod.rs b/src/long_mode/mod.rs
index e79c8cb..4ef7a04 100644
--- a/src/long_mode/mod.rs
+++ b/src/long_mode/mod.rs
@@ -5982,6 +5982,17 @@ fn read_operands<T: Iterator<Item=u8>>(decoder: &InstDecoder, mut bytes_iter: T,
][r as usize];
instruction.operand_count = 1;
}
+ OperandCode::ModRM_0x8f_Ev => {
+ instruction.operands[0] = mem_oper;
+ let r = (modrm >> 3) & 7;
+ if r >= 1 {
+ return Err(DecodeError::InvalidOpcode);
+ }
+ instruction.opcode = [
+ Opcode::POP,
+ ][r as usize];
+ instruction.operand_count = 1;
+ }
OperandCode::ModRM_0xff_Ev => {
instruction.operands[0] = mem_oper;
let r = (modrm >> 3) & 7;