aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/long_mode/display.rs8
-rw-r--r--src/long_mode/mod.rs17
2 files changed, 17 insertions, 8 deletions
diff --git a/src/long_mode/display.rs b/src/long_mode/display.rs
index 260d5dc..2bd9ad8 100644
--- a/src/long_mode/display.rs
+++ b/src/long_mode/display.rs
@@ -1235,6 +1235,10 @@ const MNEMONICS: &[&'static str] = &[
"fxtract",
"fyl2x",
"fyl2xp1",
+ "loopnz",
+ "loopz",
+ "loop",
+ "jrcxz",
];
impl Opcode {
@@ -1628,6 +1632,10 @@ impl <T: fmt::Write, Color: fmt::Display, Y: YaxColors<Color>> Colorize<T, Color
Opcode::IRETQ |
Opcode::RETF |
Opcode::RETURN => { write!(out, "{}", colors.stop_op(self)) }
+ Opcode::LOOPNZ |
+ Opcode::LOOPZ |
+ Opcode::LOOP |
+ Opcode::JRCXZ |
Opcode::CALL |
Opcode::CALLF |
Opcode::JMP |
diff --git a/src/long_mode/mod.rs b/src/long_mode/mod.rs
index 6ff6ac9..2f5fe5d 100644
--- a/src/long_mode/mod.rs
+++ b/src/long_mode/mod.rs
@@ -1537,6 +1537,11 @@ pub enum Opcode {
FXTRACT,
FYL2X,
FYL2XP1,
+
+ LOOPNZ,
+ LOOPZ,
+ LOOP,
+ JRCXZ,
}
#[derive(Debug)]
@@ -5236,14 +5241,10 @@ const OPCODES: [OpcodeRecord; 256] = [
// x86 df
OpcodeRecord(Interpretation::Instruction(Opcode::Invalid), OperandCode::x87_df),
// 0xe0
- // LOOPNZ
- OpcodeRecord(Interpretation::Instruction(Opcode::Invalid), OperandCode::Nothing),
- // LOOPZ
- OpcodeRecord(Interpretation::Instruction(Opcode::Invalid), OperandCode::Nothing),
- // LOOP
- OpcodeRecord(Interpretation::Instruction(Opcode::Invalid), OperandCode::Nothing),
- // JECXZ
- OpcodeRecord(Interpretation::Instruction(Opcode::Invalid), OperandCode::Nothing),
+ OpcodeRecord(Interpretation::Instruction(Opcode::LOOPNZ), OperandCode::Ibs),
+ OpcodeRecord(Interpretation::Instruction(Opcode::LOOPZ), OperandCode::Ibs),
+ OpcodeRecord(Interpretation::Instruction(Opcode::LOOP), OperandCode::Ibs),
+ OpcodeRecord(Interpretation::Instruction(Opcode::JRCXZ), OperandCode::Ibs),
OpcodeRecord(Interpretation::Instruction(Opcode::IN), OperandCode::AL_Ib),
OpcodeRecord(Interpretation::Instruction(Opcode::IN), OperandCode::AX_Ib),
OpcodeRecord(Interpretation::Instruction(Opcode::OUT), OperandCode::Ib_AL),