| Index: src/x64/disasm-x64.cc
|
| ===================================================================
|
| --- src/x64/disasm-x64.cc (revision 10142)
|
| +++ src/x64/disasm-x64.cc (working copy)
|
| @@ -109,6 +109,7 @@
|
| { 0xC3, UNSET_OP_ORDER, "ret" },
|
| { 0xC9, UNSET_OP_ORDER, "leave" },
|
| { 0xF4, UNSET_OP_ORDER, "hlt" },
|
| + { 0xFC, UNSET_OP_ORDER, "cld" },
|
| { 0xCC, UNSET_OP_ORDER, "int3" },
|
| { 0x60, UNSET_OP_ORDER, "pushad" },
|
| { 0x61, UNSET_OP_ORDER, "popad" },
|
| @@ -1034,7 +1035,18 @@
|
| }
|
| } else {
|
| get_modrm(*current, &mod, ®op, &rm);
|
| - if (opcode == 0x28) {
|
| + if (opcode == 0x1f) {
|
| + current++;
|
| + if (rm == 4) { // SIB byte present.
|
| + current++;
|
| + }
|
| + if (mod == 1) { // Byte displacement.
|
| + current += 1;
|
| + } else if (mod == 2) { // 32-bit displacement.
|
| + current += 4;
|
| + } // else no immediate displacement.
|
| + AppendToBuffer("nop");
|
| + } else if (opcode == 0x28) {
|
| AppendToBuffer("movapd %s, ", NameOfXMMRegister(regop));
|
| current += PrintRightXMMOperand(current);
|
| } else if (opcode == 0x29) {
|
| @@ -1178,7 +1190,7 @@
|
| int mod, regop, rm;
|
| get_modrm(*current, &mod, ®op, &rm);
|
| current++;
|
| - if (regop == 4) { // SIB byte present.
|
| + if (rm == 4) { // SIB byte present.
|
| current++;
|
| }
|
| if (mod == 1) { // Byte displacement.
|
|
|