Index: runtime/vm/disassembler_x64.cc |
=================================================================== |
--- runtime/vm/disassembler_x64.cc (revision 43118) |
+++ runtime/vm/disassembler_x64.cc (working copy) |
@@ -1522,17 +1522,17 @@ |
// SETcc: Set byte on condition. Needs pointer to beginning of instruction. |
current = data + SetCC(data); |
- } else if ((opcode & 0xFE) == 0xA4 || (opcode & 0xFE) == 0xAC || |
- opcode == 0xAB || opcode == 0xA3) { |
+ } else if (((opcode & 0xFE) == 0xA4) || ((opcode & 0xFE) == 0xAC) || |
+ (opcode == 0xAB) || (opcode == 0xA3) || (opcode == 0xBD)) { |
// SHLD, SHRD (double-prec. shift), BTS (bit test and set), BT (bit test). |
AppendToBuffer("%s%c ", mnemonic, operand_size_code()); |
int mod, regop, rm; |
get_modrm(*current, &mod, ®op, &rm); |
current += PrintRightOperand(current); |
AppendToBuffer(",%s", NameOfCPURegister(regop)); |
- if (opcode == 0xAB || opcode == 0xA3) { |
+ if ((opcode == 0xAB) || (opcode == 0xA3) || (opcode == 0xBD)) { |
// Done. |
- } else if (opcode == 0xA5 || opcode == 0xAD) { |
+ } else if ((opcode == 0xA5) || (opcode == 0xAD)) { |
AppendToBuffer(",cl"); |
} else { |
AppendToBuffer(","); |
@@ -1586,6 +1586,8 @@ |
return "movzxw"; |
case 0xBE: |
return "movsxb"; |
+ case 0xBD: |
+ return "bsr"; |
case 0xBF: |
return "movsxw"; |
case 0x12: |