@@ -1602,18 +1602,31 @@ int DisassemblerIA32::InstructionDecode(v8::internal::Vector<char> out_buffer,
16021602 while (*data == 0x66 ) data++;
16031603 if (*data == 0xf && data[1 ] == 0x1f ) {
16041604 AppendToBuffer (" nop" ); // 0x66 prefix
1605- } else if (*data == 0x90 ) {
1606- AppendToBuffer (" nop" ); // 0x66 prefix
1607- } else if (*data == 0x8B ) {
1605+ } else if (*data == 0x39 ) {
16081606 data++;
1609- data += PrintOperands (" mov_w" , REG_OPER_OP_ORDER, data);
1607+ data += PrintOperands (" cmpw" , OPER_REG_OP_ORDER, data);
1608+ } else if (*data == 0x3B ) {
1609+ data++;
1610+ data += PrintOperands (" cmpw" , REG_OPER_OP_ORDER, data);
1611+ } else if (*data == 0x81 ) {
1612+ data++;
1613+ AppendToBuffer (" cmpw " );
1614+ data += PrintRightOperand (data);
1615+ int imm = *reinterpret_cast <int16_t *>(data);
1616+ AppendToBuffer (" ,0x%x" , imm);
1617+ data += 2 ;
16101618 } else if (*data == 0x89 ) {
16111619 data++;
16121620 int mod, regop, rm;
16131621 get_modrm (*data, &mod, ®op, &rm);
16141622 AppendToBuffer (" mov_w " );
16151623 data += PrintRightOperand (data);
16161624 AppendToBuffer (" ,%s" , NameOfCPURegister (regop));
1625+ } else if (*data == 0x8B ) {
1626+ data++;
1627+ data += PrintOperands (" mov_w" , REG_OPER_OP_ORDER, data);
1628+ } else if (*data == 0x90 ) {
1629+ AppendToBuffer (" nop" ); // 0x66 prefix
16171630 } else if (*data == 0xC7 ) {
16181631 data++;
16191632 AppendToBuffer (" %s " , " mov_w" );
0 commit comments