Lines Matching refs:data

361   static void get_modrm(byte data, int* mod, int* regop, int* rm) {  in get_modrm()  argument
362 *mod = (data >> 6) & 3; in get_modrm()
363 *regop = (data & 0x38) >> 3; in get_modrm()
364 *rm = data & 7; in get_modrm()
368 static void get_sib(byte data, int* scale, int* index, int* base) { in get_sib() argument
369 *scale = (data >> 6) & 3; in get_sib()
370 *index = (data >> 3) & 7; in get_sib()
371 *base = data & 7; in get_sib()
380 int PrintOperands(const char* mnem, OperandOrder op_order, byte* data);
381 int PrintImmediateOp(byte* data);
382 int F7Instruction(byte* data);
383 int D1D3C1Instruction(byte* data);
384 int JumpShort(byte* data);
385 int JumpConditional(byte* data, const char* comment);
386 int JumpConditionalShort(byte* data, const char* comment);
387 int SetCC(byte* data);
388 int CMov(byte* data);
389 int FPUInstruction(byte* data);
392 int AVXInstruction(byte* data);
524 byte* data) { in PrintOperands() argument
525 byte modrm = *data; in PrintOperands()
532 advance = PrintRightOperand(data); in PrintOperands()
537 advance = PrintRightOperand(data); in PrintOperands()
551 int DisassemblerIA32::PrintImmediateOp(byte* data) { in PrintImmediateOp() argument
552 bool sign_extension_bit = (*data & 0x02) != 0; in PrintImmediateOp()
553 byte modrm = *(data+1); in PrintImmediateOp()
568 int count = PrintRightOperand(data+1); in PrintImmediateOp()
570 AppendToBuffer(",0x%x", *(data + 1 + count)); in PrintImmediateOp()
573 AppendToBuffer(",0x%x", *reinterpret_cast<int32_t*>(data + 1 + count)); in PrintImmediateOp()
580 int DisassemblerIA32::F7Instruction(byte* data) { in F7Instruction() argument
581 DCHECK_EQ(0xF7, *data); in F7Instruction()
582 byte modrm = *++data; in F7Instruction()
612 int count = PrintRightOperand(data); in F7Instruction()
614 AppendToBuffer(",0x%x", *reinterpret_cast<int32_t*>(data + count)); in F7Instruction()
621 int DisassemblerIA32::D1D3C1Instruction(byte* data) { in D1D3C1Instruction() argument
622 byte op = *data; in D1D3C1Instruction()
624 byte modrm = *++data; in D1D3C1Instruction()
655 int count = PrintRightOperand(data); in D1D3C1Instruction()
659 imm8 = *(data + 1); in D1D3C1Instruction()
674 int DisassemblerIA32::JumpShort(byte* data) { in JumpShort() argument
675 DCHECK_EQ(0xEB, *data); in JumpShort()
676 byte b = *(data+1); in JumpShort()
677 byte* dest = data + static_cast<int8_t>(b) + 2; in JumpShort()
684 int DisassemblerIA32::JumpConditional(byte* data, const char* comment) { in JumpConditional() argument
685 DCHECK_EQ(0x0F, *data); in JumpConditional()
686 byte cond = *(data+1) & 0x0F; in JumpConditional()
687 byte* dest = data + *reinterpret_cast<int32_t*>(data+2) + 6; in JumpConditional()
698 int DisassemblerIA32::JumpConditionalShort(byte* data, const char* comment) { in JumpConditionalShort() argument
699 byte cond = *data & 0x0F; in JumpConditionalShort()
700 byte b = *(data+1); in JumpConditionalShort()
701 byte* dest = data + static_cast<int8_t>(b) + 2; in JumpConditionalShort()
712 int DisassemblerIA32::SetCC(byte* data) { in SetCC() argument
713 DCHECK_EQ(0x0F, *data); in SetCC()
714 byte cond = *(data+1) & 0x0F; in SetCC()
717 PrintRightByteOperand(data+2); in SetCC()
723 int DisassemblerIA32::CMov(byte* data) { in CMov() argument
724 DCHECK_EQ(0x0F, *data); in CMov()
725 byte cond = *(data + 1) & 0x0F; in CMov()
727 int op_size = PrintOperands(mnem, REG_OPER_OP_ORDER, data + 2); in CMov()
733 int DisassemblerIA32::AVXInstruction(byte* data) { in AVXInstruction() argument
734 byte opcode = *data; in AVXInstruction()
735 byte* current = data + 1; in AVXInstruction()
1275 return static_cast<int>(current - data); in AVXInstruction()
1280 int DisassemblerIA32::FPUInstruction(byte* data) { in FPUInstruction() argument
1281 byte escape_opcode = *data; in FPUInstruction()
1283 byte modrm_byte = *(data+1); in FPUInstruction()
1288 return MemoryFPUInstruction(escape_opcode, modrm_byte, data+1); in FPUInstruction()
1517 byte* data = instr; in InstructionDecode() local
1521 if (*data == 0x3E /*ds*/) { in InstructionDecode()
1523 data++; in InstructionDecode()
1524 } else if (*data == 0x2E /*cs*/) { in InstructionDecode()
1526 data++; in InstructionDecode()
1527 } else if (*data == 0xC4 && *(data + 1) >= 0xC0) { in InstructionDecode()
1528 vex_byte0_ = *data; in InstructionDecode()
1529 vex_byte1_ = *(data + 1); in InstructionDecode()
1530 vex_byte2_ = *(data + 2); in InstructionDecode()
1531 data += 3; in InstructionDecode()
1532 } else if (*data == 0xC5 && *(data + 1) >= 0xC0) { in InstructionDecode()
1533 vex_byte0_ = *data; in InstructionDecode()
1534 vex_byte1_ = *(data + 1); in InstructionDecode()
1535 data += 2; in InstructionDecode()
1536 } else if (*data == 0xF0 /*lock*/) { in InstructionDecode()
1538 data++; in InstructionDecode()
1545 data += AVXInstruction(data); in InstructionDecode()
1547 const InstructionDesc& idesc = instruction_table_->Get(*data); in InstructionDecode()
1551 data++; in InstructionDecode()
1555 data++; in InstructionDecode()
1556 data += PrintOperands(idesc.mnem, idesc.op_order_, data); in InstructionDecode()
1560 data += JumpConditionalShort(data, branch_hint); in InstructionDecode()
1564 AppendToBuffer("%s %s", idesc.mnem, NameOfCPURegister(*data & 0x07)); in InstructionDecode()
1565 data++; in InstructionDecode()
1570 reinterpret_cast<byte*>(*reinterpret_cast<int32_t*>(data + 1)); in InstructionDecode()
1571 AppendToBuffer("mov %s,%s", NameOfCPURegister(*data & 0x07), in InstructionDecode()
1573 data += 5; in InstructionDecode()
1578 byte* addr = data + *reinterpret_cast<int32_t*>(data + 1) + 5; in InstructionDecode()
1580 data += 5; in InstructionDecode()
1586 reinterpret_cast<byte*>(*reinterpret_cast<int32_t*>(data + 1)); in InstructionDecode()
1588 data += 5; in InstructionDecode()
1593 AppendToBuffer("%s al,0x%x", idesc.mnem, data[1]); in InstructionDecode()
1594 data += 2; in InstructionDecode()
1608 switch (*data) { in InstructionDecode()
1610 AppendToBuffer("ret 0x%x", *reinterpret_cast<uint16_t*>(data+1)); in InstructionDecode()
1611 data += 3; in InstructionDecode()
1615 data++; in InstructionDecode()
1616 data += PrintOperands("imul", REG_OPER_OP_ORDER, data); in InstructionDecode()
1617 AppendToBuffer(",%d", *data); in InstructionDecode()
1618 data++; in InstructionDecode()
1622 data++; in InstructionDecode()
1623 data += PrintOperands("imul", REG_OPER_OP_ORDER, data); in InstructionDecode()
1624 AppendToBuffer(",%d", *reinterpret_cast<int32_t*>(data)); in InstructionDecode()
1625 data += 4; in InstructionDecode()
1630 { data++; in InstructionDecode()
1632 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1635 data += PrintRightByteOperand(data); in InstructionDecode()
1636 int32_t imm = *data; in InstructionDecode()
1638 data++; in InstructionDecode()
1647 data += PrintImmediateOp(data); in InstructionDecode()
1651 { byte f0byte = data[1]; in InstructionDecode()
1654 data += 2; in InstructionDecode()
1656 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1659 data += PrintRightOperand(data); in InstructionDecode()
1660 } else if (f0byte == 0x1F && data[2] == 0) { in InstructionDecode()
1662 data += 3; in InstructionDecode()
1663 } else if (f0byte == 0x1F && data[2] == 0x40 && data[3] == 0) { in InstructionDecode()
1665 data += 4; in InstructionDecode()
1666 } else if (f0byte == 0x1F && data[2] == 0x44 && data[3] == 0 && in InstructionDecode()
1667 data[4] == 0) { in InstructionDecode()
1669 data += 5; in InstructionDecode()
1670 } else if (f0byte == 0x1F && data[2] == 0x80 && data[3] == 0 && in InstructionDecode()
1671 data[4] == 0 && data[5] == 0 && data[6] == 0) { in InstructionDecode()
1673 data += 7; in InstructionDecode()
1674 } else if (f0byte == 0x1F && data[2] == 0x84 && data[3] == 0 && in InstructionDecode()
1675 data[4] == 0 && data[5] == 0 && data[6] == 0 && in InstructionDecode()
1676 data[7] == 0) { in InstructionDecode()
1678 data += 8; in InstructionDecode()
1681 data += 2; in InstructionDecode()
1683 data += 2; in InstructionDecode()
1685 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1689 data++; in InstructionDecode()
1691 data += 2; in InstructionDecode()
1695 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1698 data += PrintRightXMMOperand(data); in InstructionDecode()
1702 data += PrintRightXMMOperand(data); in InstructionDecode()
1705 data += 2; in InstructionDecode()
1707 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1709 data += PrintRightXMMOperand(data); in InstructionDecode()
1717 data += 2; in InstructionDecode()
1719 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1722 data += PrintRightXMMOperand(data); in InstructionDecode()
1724 data += 2; in InstructionDecode()
1726 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1730 data++; in InstructionDecode()
1732 data += 2; in InstructionDecode()
1734 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1738 data += PrintRightXMMOperand(data); in InstructionDecode()
1739 AppendToBuffer(", (%s)", pseudo_op[*data]); in InstructionDecode()
1740 data++; in InstructionDecode()
1743 data += 2; in InstructionDecode()
1745 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1746 int8_t imm8 = static_cast<int8_t>(data[1]); in InstructionDecode()
1751 data += 2; in InstructionDecode()
1754 data += 2; in InstructionDecode()
1758 data += JumpConditional(data, branch_hint); in InstructionDecode()
1761 data += 2; in InstructionDecode()
1762 data += PrintOperands(f0mnem, REG_OPER_OP_ORDER, data); in InstructionDecode()
1764 data += SetCC(data); in InstructionDecode()
1766 data += CMov(data); in InstructionDecode()
1769 data += 2; in InstructionDecode()
1772 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1773 int8_t imm8 = static_cast<int8_t>(data[1]); in InstructionDecode()
1774 data += 2; in InstructionDecode()
1779 data += 2; in InstructionDecode()
1782 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1783 data += PrintRightOperand(data); in InstructionDecode()
1791 data += 2; in InstructionDecode()
1794 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1795 data += PrintRightOperand(data); in InstructionDecode()
1799 data += 2; in InstructionDecode()
1800 data += PrintOperands(f0mnem, OPER_REG_OP_ORDER, data); in InstructionDecode()
1802 data += 2; in InstructionDecode()
1804 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1806 data += PrintRightOperand(data); in InstructionDecode()
1808 data += 2; in InstructionDecode()
1810 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1812 data += PrintRightOperand(data); in InstructionDecode()
1815 data += 2; in InstructionDecode()
1818 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1819 data += PrintRightOperand(data); in InstructionDecode()
1820 } else if (f0byte == 0xAE && (data[2] & 0xF8) == 0xE8) { in InstructionDecode()
1822 data += 3; in InstructionDecode()
1830 { data++; in InstructionDecode()
1832 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1835 data += PrintRightOperand(data); in InstructionDecode()
1841 { data++; in InstructionDecode()
1843 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1854 data += PrintRightOperand(data); in InstructionDecode()
1860 { bool is_byte = *data == 0xC6; in InstructionDecode()
1861 data++; in InstructionDecode()
1864 data += PrintRightByteOperand(data); in InstructionDecode()
1865 int32_t imm = *data; in InstructionDecode()
1867 data++; in InstructionDecode()
1870 data += PrintRightOperand(data); in InstructionDecode()
1871 int32_t imm = *reinterpret_cast<int32_t*>(data); in InstructionDecode()
1873 data += 4; in InstructionDecode()
1879 { data++; in InstructionDecode()
1881 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1889 data += PrintRightByteOperand(data); in InstructionDecode()
1890 int32_t imm = *data; in InstructionDecode()
1892 data++; in InstructionDecode()
1898 { bool is_byte = *data == 0x88; in InstructionDecode()
1900 data++; in InstructionDecode()
1901 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1904 data += PrintRightByteOperand(data); in InstructionDecode()
1908 data += PrintRightOperand(data); in InstructionDecode()
1915 while (*data == 0x66) data++; in InstructionDecode()
1916 if (*data == 0xF && data[1] == 0x1F) { in InstructionDecode()
1918 } else if (*data == 0x39) { in InstructionDecode()
1919 data++; in InstructionDecode()
1920 data += PrintOperands("cmpw", OPER_REG_OP_ORDER, data); in InstructionDecode()
1921 } else if (*data == 0x3B) { in InstructionDecode()
1922 data++; in InstructionDecode()
1923 data += PrintOperands("cmpw", REG_OPER_OP_ORDER, data); in InstructionDecode()
1924 } else if (*data == 0x81) { in InstructionDecode()
1925 data++; in InstructionDecode()
1927 data += PrintRightOperand(data); in InstructionDecode()
1928 int imm = *reinterpret_cast<int16_t*>(data); in InstructionDecode()
1930 data += 2; in InstructionDecode()
1931 } else if (*data == 0x87) { in InstructionDecode()
1932 data++; in InstructionDecode()
1934 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1936 data += PrintRightOperand(data); in InstructionDecode()
1937 } else if (*data == 0x89) { in InstructionDecode()
1938 data++; in InstructionDecode()
1940 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1942 data += PrintRightOperand(data); in InstructionDecode()
1944 } else if (*data == 0x8B) { in InstructionDecode()
1945 data++; in InstructionDecode()
1946 data += PrintOperands("mov_w", REG_OPER_OP_ORDER, data); in InstructionDecode()
1947 } else if (*data == 0x90) { in InstructionDecode()
1949 } else if (*data == 0xC7) { in InstructionDecode()
1950 data++; in InstructionDecode()
1952 data += PrintRightOperand(data); in InstructionDecode()
1953 int imm = *reinterpret_cast<int16_t*>(data); in InstructionDecode()
1955 data += 2; in InstructionDecode()
1956 } else if (*data == 0xF7) { in InstructionDecode()
1957 data++; in InstructionDecode()
1959 data += PrintRightOperand(data); in InstructionDecode()
1960 int imm = *reinterpret_cast<int16_t*>(data); in InstructionDecode()
1962 data += 2; in InstructionDecode()
1963 } else if (*data == 0x0F) { in InstructionDecode()
1964 data++; in InstructionDecode()
1965 if (*data == 0x38) { in InstructionDecode()
1966 data++; in InstructionDecode()
1967 byte op = *data; in InstructionDecode()
1968 data++; in InstructionDecode()
1970 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1975 data += PrintRightXMMOperand(data); \ in InstructionDecode()
1986 } else if (*data == 0x3A) { in InstructionDecode()
1987 data++; in InstructionDecode()
1988 if (*data == 0x0A) { in InstructionDecode()
1989 data++; in InstructionDecode()
1991 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
1992 int8_t imm8 = static_cast<int8_t>(data[1]); in InstructionDecode()
1995 data += 2; in InstructionDecode()
1996 } else if (*data == 0x0B) { in InstructionDecode()
1997 data++; in InstructionDecode()
1999 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2000 int8_t imm8 = static_cast<int8_t>(data[1]); in InstructionDecode()
2005 data += 2; in InstructionDecode()
2006 } else if (*data == 0x0E) { in InstructionDecode()
2007 data++; in InstructionDecode()
2009 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2011 data += PrintRightXMMOperand(data); in InstructionDecode()
2012 AppendToBuffer(",%d", *reinterpret_cast<uint8_t*>(data)); in InstructionDecode()
2013 data++; in InstructionDecode()
2014 } else if (*data == 0x0F) { in InstructionDecode()
2015 data++; in InstructionDecode()
2017 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2019 data += PrintRightXMMOperand(data); in InstructionDecode()
2020 AppendToBuffer(",%d", *reinterpret_cast<uint8_t*>(data)); in InstructionDecode()
2021 data++; in InstructionDecode()
2022 } else if (*data == 0x14) { in InstructionDecode()
2023 data++; in InstructionDecode()
2025 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2027 data += PrintRightOperand(data); in InstructionDecode()
2029 *reinterpret_cast<int8_t*>(data)); in InstructionDecode()
2030 data++; in InstructionDecode()
2031 } else if (*data == 0x15) { in InstructionDecode()
2032 data++; in InstructionDecode()
2034 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2036 data += PrintRightOperand(data); in InstructionDecode()
2038 *reinterpret_cast<int8_t*>(data)); in InstructionDecode()
2039 data++; in InstructionDecode()
2040 } else if (*data == 0x16) { in InstructionDecode()
2041 data++; in InstructionDecode()
2043 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2045 data += PrintRightOperand(data); in InstructionDecode()
2047 *reinterpret_cast<int8_t*>(data)); in InstructionDecode()
2048 data++; in InstructionDecode()
2049 } else if (*data == 0x17) { in InstructionDecode()
2050 data++; in InstructionDecode()
2052 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2053 int8_t imm8 = static_cast<int8_t>(data[1]); in InstructionDecode()
2058 data += 2; in InstructionDecode()
2059 } else if (*data == 0x20) { in InstructionDecode()
2060 data++; in InstructionDecode()
2062 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2064 data += PrintRightOperand(data); in InstructionDecode()
2065 AppendToBuffer(",%d", *reinterpret_cast<int8_t*>(data)); in InstructionDecode()
2066 data++; in InstructionDecode()
2067 } else if (*data == 0x21) { in InstructionDecode()
2068 data++; in InstructionDecode()
2070 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2072 data += PrintRightXMMOperand(data); in InstructionDecode()
2073 AppendToBuffer(",%d", *reinterpret_cast<int8_t*>(data)); in InstructionDecode()
2074 data++; in InstructionDecode()
2075 } else if (*data == 0x22) { in InstructionDecode()
2076 data++; in InstructionDecode()
2078 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2080 data += PrintRightOperand(data); in InstructionDecode()
2081 AppendToBuffer(",%d", *reinterpret_cast<int8_t*>(data)); in InstructionDecode()
2082 data++; in InstructionDecode()
2086 } else if (*data == 0x2E || *data == 0x2F) { in InstructionDecode()
2087 const char* mnem = (*data == 0x2E) ? "ucomisd" : "comisd"; in InstructionDecode()
2088 data++; in InstructionDecode()
2090 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2095 data++; in InstructionDecode()
2098 data += PrintRightOperand(data); in InstructionDecode()
2100 } else if (*data == 0x50) { in InstructionDecode()
2101 data++; in InstructionDecode()
2103 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2107 data++; in InstructionDecode()
2108 } else if (*data == 0x54) { in InstructionDecode()
2109 data++; in InstructionDecode()
2111 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2115 data++; in InstructionDecode()
2116 } else if (*data == 0x56) { in InstructionDecode()
2117 data++; in InstructionDecode()
2119 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2123 data++; in InstructionDecode()
2124 } else if (*data == 0x57) { in InstructionDecode()
2125 data++; in InstructionDecode()
2127 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2131 data++; in InstructionDecode()
2132 } else if (*data == 0x6E) { in InstructionDecode()
2133 data++; in InstructionDecode()
2135 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2137 data += PrintRightOperand(data); in InstructionDecode()
2138 } else if (*data == 0x6F) { in InstructionDecode()
2139 data++; in InstructionDecode()
2141 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2143 data += PrintRightXMMOperand(data); in InstructionDecode()
2144 } else if (*data == 0x70) { in InstructionDecode()
2145 data++; in InstructionDecode()
2147 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2149 data += PrintRightXMMOperand(data); in InstructionDecode()
2150 AppendToBuffer(",%d", *reinterpret_cast<int8_t*>(data)); in InstructionDecode()
2151 data++; in InstructionDecode()
2152 } else if (*data == 0x90) { in InstructionDecode()
2153 data++; in InstructionDecode()
2155 } else if (*data == 0xF3) { in InstructionDecode()
2156 data++; in InstructionDecode()
2158 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2162 data++; in InstructionDecode()
2163 } else if (*data == 0x71) { in InstructionDecode()
2164 data++; in InstructionDecode()
2166 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2167 int8_t imm8 = static_cast<int8_t>(data[1]); in InstructionDecode()
2170 data += 2; in InstructionDecode()
2171 } else if (*data == 0x72) { in InstructionDecode()
2172 data++; in InstructionDecode()
2174 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2175 int8_t imm8 = static_cast<int8_t>(data[1]); in InstructionDecode()
2178 data += 2; in InstructionDecode()
2179 } else if (*data == 0x73) { in InstructionDecode()
2180 data++; in InstructionDecode()
2182 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2183 int8_t imm8 = static_cast<int8_t>(data[1]); in InstructionDecode()
2187 data += 2; in InstructionDecode()
2188 } else if (*data == 0xD3) { in InstructionDecode()
2189 data++; in InstructionDecode()
2191 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2195 data++; in InstructionDecode()
2196 } else if (*data == 0x7F) { in InstructionDecode()
2198 data++; in InstructionDecode()
2200 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2201 data += PrintRightXMMOperand(data); in InstructionDecode()
2203 } else if (*data == 0x7E) { in InstructionDecode()
2204 data++; in InstructionDecode()
2206 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2208 data += PrintRightOperand(data); in InstructionDecode()
2210 } else if (*data == 0xC4) { in InstructionDecode()
2211 data++; in InstructionDecode()
2213 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2215 data += PrintRightOperand(data); in InstructionDecode()
2216 AppendToBuffer(",%d", *reinterpret_cast<int8_t*>(data)); in InstructionDecode()
2217 data++; in InstructionDecode()
2218 } else if (*data == 0xE7) { in InstructionDecode()
2219 data++; in InstructionDecode()
2221 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2228 } else if (*data == 0xB1) { in InstructionDecode()
2229 data++; in InstructionDecode()
2230 data += PrintOperands("cmpxchg_w", OPER_REG_OP_ORDER, data); in InstructionDecode()
2232 byte op = *data; in InstructionDecode()
2233 data++; in InstructionDecode()
2235 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2240 data += PrintRightXMMOperand(data); \ in InstructionDecode()
2256 { data++; in InstructionDecode()
2258 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2261 data += PrintRightOperand(data); in InstructionDecode()
2269 AppendToBuffer("push 0x%x", *reinterpret_cast<int32_t*>(data+1)); in InstructionDecode()
2270 data += 5; in InstructionDecode()
2274 AppendToBuffer("push 0x%x", *reinterpret_cast<int8_t*>(data + 1)); in InstructionDecode()
2275 data += 2; in InstructionDecode()
2279 AppendToBuffer("test al,0x%x", *reinterpret_cast<uint8_t*>(data+1)); in InstructionDecode()
2280 data += 2; in InstructionDecode()
2284 AppendToBuffer("test eax,0x%x", *reinterpret_cast<int32_t*>(data+1)); in InstructionDecode()
2285 data += 5; in InstructionDecode()
2291 data += D1D3C1Instruction(data); in InstructionDecode()
2302 data += FPUInstruction(data); in InstructionDecode()
2306 data += JumpShort(data); in InstructionDecode()
2310 if (*(data+1) == 0x0F) { in InstructionDecode()
2311 byte b2 = *(data+2); in InstructionDecode()
2314 data += 3; in InstructionDecode()
2316 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2317 data += PrintRightXMMOperand(data); in InstructionDecode()
2320 data += 3; in InstructionDecode()
2322 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2324 data += PrintRightXMMOperand(data); in InstructionDecode()
2326 data += 3; in InstructionDecode()
2328 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2330 data += PrintRightXMMOperand(data); in InstructionDecode()
2332 data += 3; in InstructionDecode()
2334 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2336 data += PrintRightXMMOperand(data); in InstructionDecode()
2337 AppendToBuffer(",%d", *reinterpret_cast<int8_t*>(data)); in InstructionDecode()
2338 data++; in InstructionDecode()
2376 data += 3; in InstructionDecode()
2378 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2381 data += PrintRightOperand(data); in InstructionDecode()
2384 data += PrintRightXMMOperand(data); in InstructionDecode()
2398 pseudo_op[data[1]], in InstructionDecode()
2401 data += 2; in InstructionDecode()
2404 data += PrintRightXMMOperand(data); in InstructionDecode()
2413 if (*(data+1) == 0x0F) { in InstructionDecode()
2414 byte b2 = *(data+2); in InstructionDecode()
2417 data += 3; in InstructionDecode()
2419 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2420 data += PrintRightXMMOperand(data); in InstructionDecode()
2423 data += 3; in InstructionDecode()
2425 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2427 data += PrintRightXMMOperand(data); in InstructionDecode()
2429 data += 3; in InstructionDecode()
2431 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2433 data += PrintRightXMMOperand(data); in InstructionDecode()
2435 data += 3; in InstructionDecode()
2437 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2439 data += PrintRightXMMOperand(data); in InstructionDecode()
2441 data += 3; in InstructionDecode()
2443 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2445 data += PrintRightXMMOperand(data); in InstructionDecode()
2446 AppendToBuffer(",%d", *reinterpret_cast<int8_t*>(data)); in InstructionDecode()
2447 data++; in InstructionDecode()
2450 data += 3; in InstructionDecode()
2452 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2453 data += PrintRightXMMOperand(data); in InstructionDecode()
2456 data += 3; in InstructionDecode()
2458 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2460 data += PrintRightOperand(data); in InstructionDecode()
2462 data += 3; in InstructionDecode()
2464 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2466 data += PrintRightOperand(data); in InstructionDecode()
2468 data += 3; in InstructionDecode()
2470 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2472 data += PrintRightOperand(data); in InstructionDecode()
2513 data += 3; in InstructionDecode()
2515 get_modrm(*data, &mod, &regop, &rm); in InstructionDecode()
2518 data += PrintRightOperand(data); in InstructionDecode()
2521 data += PrintRightXMMOperand(data); in InstructionDecode()
2527 AppendToBuffer("%s %s,%s", pseudo_op[data[1]], in InstructionDecode()
2529 data += 2; in InstructionDecode()
2532 data += PrintRightXMMOperand(data); in InstructionDecode()
2535 } else if (*(data+1) == 0xA5) { in InstructionDecode()
2536 data += 2; in InstructionDecode()
2538 } else if (*(data+1) == 0xAB) { in InstructionDecode()
2539 data += 2; in InstructionDecode()
2541 } else if (*(data + 1) == 0x90) { in InstructionDecode()
2542 data += 2; in InstructionDecode()
2550 data += F7Instruction(data); in InstructionDecode()
2562 int instr_len = data - instr; in InstructionDecode()
2564 printf("%02x", *data); in InstructionDecode()
2570 for (byte* bp = instr; bp < data; bp++) { in InstructionDecode()