reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
648 dbgprintf(insn, "readOpcode()"); 650 insn->opcodeType = ONEBYTE; 652 if (insn->vectorExtensionType == TYPE_EVEX) { 653 switch (mmFromEVEX2of4(insn->vectorExtensionPrefix[1])) { 655 dbgprintf(insn, "Unhandled mm field for instruction (0x%hhx)", 656 mmFromEVEX2of4(insn->vectorExtensionPrefix[1])); 659 insn->opcodeType = TWOBYTE; 660 return consumeByte(insn, &insn->opcode); 660 return consumeByte(insn, &insn->opcode); 662 insn->opcodeType = THREEBYTE_38; 663 return consumeByte(insn, &insn->opcode); 663 return consumeByte(insn, &insn->opcode); 665 insn->opcodeType = THREEBYTE_3A; 666 return consumeByte(insn, &insn->opcode); 666 return consumeByte(insn, &insn->opcode); 668 } else if (insn->vectorExtensionType == TYPE_VEX_3B) { 669 switch (mmmmmFromVEX2of3(insn->vectorExtensionPrefix[1])) { 671 dbgprintf(insn, "Unhandled m-mmmm field for instruction (0x%hhx)", 672 mmmmmFromVEX2of3(insn->vectorExtensionPrefix[1])); 675 insn->opcodeType = TWOBYTE; 676 return consumeByte(insn, &insn->opcode); 676 return consumeByte(insn, &insn->opcode); 678 insn->opcodeType = THREEBYTE_38; 679 return consumeByte(insn, &insn->opcode); 679 return consumeByte(insn, &insn->opcode); 681 insn->opcodeType = THREEBYTE_3A; 682 return consumeByte(insn, &insn->opcode); 682 return consumeByte(insn, &insn->opcode); 684 } else if (insn->vectorExtensionType == TYPE_VEX_2B) { 685 insn->opcodeType = TWOBYTE; 686 return consumeByte(insn, &insn->opcode); 686 return consumeByte(insn, &insn->opcode); 687 } else if (insn->vectorExtensionType == TYPE_XOP) { 688 switch (mmmmmFromXOP2of3(insn->vectorExtensionPrefix[1])) { 690 dbgprintf(insn, "Unhandled m-mmmm field for instruction (0x%hhx)", 691 mmmmmFromVEX2of3(insn->vectorExtensionPrefix[1])); 694 insn->opcodeType = XOP8_MAP; 695 return consumeByte(insn, &insn->opcode); 695 return consumeByte(insn, &insn->opcode); 697 insn->opcodeType = XOP9_MAP; 698 return consumeByte(insn, &insn->opcode); 698 return consumeByte(insn, &insn->opcode); 700 insn->opcodeType = XOPA_MAP; 701 return consumeByte(insn, &insn->opcode); 701 return consumeByte(insn, &insn->opcode); 705 if (consumeByte(insn, ¤t)) 709 dbgprintf(insn, "Found a two-byte escape prefix (0x%hhx)", current); 711 if (consumeByte(insn, ¤t)) 715 dbgprintf(insn, "Found a three-byte escape prefix (0x%hhx)", current); 717 if (consumeByte(insn, ¤t)) 720 insn->opcodeType = THREEBYTE_38; 722 dbgprintf(insn, "Found a three-byte escape prefix (0x%hhx)", current); 724 if (consumeByte(insn, ¤t)) 727 insn->opcodeType = THREEBYTE_3A; 729 dbgprintf(insn, "Found a 3dnow escape prefix (0x%hhx)", current); 732 if (readModRM(insn)) 735 if (consumeByte(insn, ¤t)) 738 insn->opcodeType = THREEDNOW_MAP; 740 dbgprintf(insn, "Didn't find a three-byte escape prefix"); 742 insn->opcodeType = TWOBYTE; 744 } else if (insn->mandatoryPrefix) 747 insn->mandatoryPrefix = 0; 754 insn->opcode = current;