bool CheckPrefix(TargetReader reader) { byte opcode = reader.PeekByte(); if ((opcode >= 0x40) && (opcode <= 0x4f)) { if (!Is64BitMode) { return(false); } if ((opcode & 0x01) != 0) { RexPrefix |= X86_REX_Prefix.REX_B; } if ((opcode & 0x02) != 0) { RexPrefix |= X86_REX_Prefix.REX_X; } if ((opcode & 0x04) != 0) { RexPrefix |= X86_REX_Prefix.REX_R; } if ((opcode & 0x08) != 0) { RexPrefix |= X86_REX_Prefix.REX_W; } return(true); } else if (opcode == 0x26) { Prefix |= X86_Prefix.ES; return(true); } else if (opcode == 0x2e) { Prefix |= X86_Prefix.CS; return(true); } else if (opcode == 0x36) { Prefix |= X86_Prefix.SS; return(true); } else if (opcode == 0x3e) { Prefix |= X86_Prefix.DS; return(true); } else if (opcode == 0x64) { Prefix |= X86_Prefix.FS; return(true); } else if (opcode == 0x65) { Prefix |= X86_Prefix.GS; return(true); } else if (opcode == 0x66) { Prefix |= X86_Prefix.DATA; return(true); } else if (opcode == 0x67) { Prefix |= X86_Prefix.ADDR; return(true); } else if (opcode == 0xf0) { Prefix |= X86_Prefix.LOCK; return(true); } else if (opcode == 0xf2) { Prefix |= X86_Prefix.REPNZ; return(true); } else if (opcode == 0xf3) { Prefix |= X86_Prefix.REPZ; return(true); } return(false); }
bool CheckPrefix(TargetReader reader) { byte opcode = reader.PeekByte (); if ((opcode >= 0x40) && (opcode <= 0x4f)) { if (!Is64BitMode) return false; if ((opcode & 0x01) != 0) RexPrefix |= X86_REX_Prefix.REX_B; if ((opcode & 0x02) != 0) RexPrefix |= X86_REX_Prefix.REX_X; if ((opcode & 0x04) != 0) RexPrefix |= X86_REX_Prefix.REX_R; if ((opcode & 0x08) != 0) RexPrefix |= X86_REX_Prefix.REX_W; return true; } else if (opcode == 0x26) { Prefix |= X86_Prefix.ES; return true; } else if (opcode == 0x2e) { Prefix |= X86_Prefix.CS; return true; } else if (opcode == 0x36) { Prefix |= X86_Prefix.SS; return true; } else if (opcode == 0x3e) { Prefix |= X86_Prefix.DS; return true; } else if (opcode == 0x64) { Prefix |= X86_Prefix.FS; return true; } else if (opcode == 0x65) { Prefix |= X86_Prefix.GS; return true; } else if (opcode == 0x66) { Prefix |= X86_Prefix.DATA; return true; } else if (opcode == 0x67) { Prefix |= X86_Prefix.ADDR; return true; } else if (opcode == 0xf0) { Prefix |= X86_Prefix.LOCK; return true; } else if (opcode == 0xf2) { Prefix |= X86_Prefix.REPNZ; return true; } else if (opcode == 0xf3) { Prefix |= X86_Prefix.REPZ; return true; } return false; }