diff options
Diffstat (limited to 'src/long_mode')
| -rw-r--r-- | src/long_mode/display.rs | 8 | ||||
| -rw-r--r-- | src/long_mode/mod.rs | 17 | 
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), | 
