From c9df7910c914d04644aee660d48de1245467f384 Mon Sep 17 00:00:00 2001 From: iximeow Date: Sun, 3 May 2020 13:52:39 -0700 Subject: that instruction is cwd, not cbd --- src/long_mode/display.rs | 4 ++-- src/long_mode/mod.rs | 4 ++-- src/protected_mode/display.rs | 4 ++-- src/protected_mode/mod.rs | 4 ++-- test/long_mode/mod.rs | 2 ++ test/protected_mode/mod.rs | 1 + 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/long_mode/display.rs b/src/long_mode/display.rs index 3025c16..49d1600 100644 --- a/src/long_mode/display.rs +++ b/src/long_mode/display.rs @@ -643,7 +643,7 @@ impl fmt::Display for Opcode { &Opcode::CBW => write!(f, "cbw"), &Opcode::CWDE => write!(f, "cwde"), &Opcode::CDQE => write!(f, "cdqe"), - &Opcode::CBD => write!(f, "cbd"), + &Opcode::CWD => write!(f, "cwd"), &Opcode::CDQ => write!(f, "cdq"), &Opcode::CQO => write!(f, "cqo"), &Opcode::ANDN => write!(f, "andn"), @@ -1665,7 +1665,7 @@ impl > Colorize>(decoder: &InstDecoder, mut bytes_iter OperandCode::CVT_DA => { let opwidth = imm_width_from_prefixes_64(SizeCode::vqp, instruction.prefixes); instruction.opcode = match opwidth { - 2 => { Opcode::CBD }, + 2 => { Opcode::CWD }, 4 => { Opcode::CDQ }, 8 => { Opcode::CQO }, _ => { unreachable!("invalid operation width"); }, diff --git a/src/protected_mode/display.rs b/src/protected_mode/display.rs index a5624d6..d072991 100644 --- a/src/protected_mode/display.rs +++ b/src/protected_mode/display.rs @@ -630,7 +630,7 @@ impl fmt::Display for Opcode { &Opcode::CBW => write!(f, "cbw"), &Opcode::CWDE => write!(f, "cwde"), &Opcode::CDQE => write!(f, "cdqe"), - &Opcode::CBD => write!(f, "cbd"), + &Opcode::CWD => write!(f, "cwd"), &Opcode::CDQ => write!(f, "cdq"), &Opcode::CQO => write!(f, "cqo"), &Opcode::ANDN => write!(f, "andn"), @@ -1652,7 +1652,7 @@ impl > Colorize>(decoder: &InstDecoder, mut bytes_iter OperandCode::CVT_DA => { let opwidth = imm_width_from_prefixes(SizeCode::vd, instruction.prefixes); instruction.opcode = match opwidth { - 2 => { Opcode::CBD }, + 2 => { Opcode::CWD }, 4 => { Opcode::CDQ }, _ => { unreachable!("invalid operation width"); }, } diff --git a/test/long_mode/mod.rs b/test/long_mode/mod.rs index ca8a557..addaae4 100644 --- a/test/long_mode/mod.rs +++ b/test/long_mode/mod.rs @@ -804,6 +804,8 @@ fn test_misc() { test_display(&[0xcd, 0xff], "int 0xff"); test_display(&[0x9c], "pushf"); test_display(&[0x48, 0x98], "cdqe"); + test_display(&[0x98], "cwde"); + test_display(&[0x66, 0x99], "cwd"); test_display(&[0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00], "nop cs:[rax + rax * 1]"); test_display(&[0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00], "nop [rax + rax * 1]"); test_display(&[0x48, 0x8d, 0xa4, 0xc7, 0x20, 0x00, 0x00, 0x12], "lea rsp, [rdi + rax * 8 + 0x12000020]"); diff --git a/test/protected_mode/mod.rs b/test/protected_mode/mod.rs index dd07159..37a3b24 100644 --- a/test/protected_mode/mod.rs +++ b/test/protected_mode/mod.rs @@ -748,6 +748,7 @@ fn test_misc() { test_display(&[0xcd, 0xff], "int 0xff"); test_display(&[0x9c], "pushf"); test_display(&[0x98], "cwde"); + test_display(&[0x66, 0x99], "cwd"); test_display(&[0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00], "nop cs:[eax + eax * 1]"); test_display(&[0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00], "nop [eax + eax * 1]"); test_display(&[0x8d, 0xa4, 0xc7, 0x20, 0x00, 0x00, 0x12], "lea esp, [edi + eax * 8 + 0x12000020]"); -- cgit v1.1