public InstructionDef(EnumValue code, string opCodeString, string instructionString, EnumValue mnemonic, EnumValue mem, EnumValue bcst, EnumValue decoderOption, InstructionDefFlags1 flags1, InstructionDefFlags2 flags2, InstructionDefFlags3 flags3, InstrStrFmtOption instrStrFmtOption, InstructionStringFlags instrStrFlags, InstrStrImpliedOp[] instrStrImpliedOps, MandatoryPrefix mandatoryPrefix, OpCodeTableKind table, OpCodeL lBit, OpCodeW wBit, uint opCode, int opCodeLength, int groupIndex, int rmGroupIndex, CodeSize operandSize, CodeSize addressSize, TupleType tupleType, OpCodeOperandKind[] opKinds, PseudoOpsKind?pseudoOp, EnumValue encoding, EnumValue flowControl, ConditionCode conditionCode, BranchKind branchKind, RflagsBits read, RflagsBits undefined, RflagsBits written, RflagsBits cleared, RflagsBits set, EnumValue[] cpuid, OpInfo[] opInfo, FastFmtInstructionDef fast, FmtInstructionDef gas, FmtInstructionDef intel, FmtInstructionDef masm, FmtInstructionDef nasm) { Code = code; OpCodeString = opCodeString; InstructionString = instructionString; Mnemonic = mnemonic; Memory = mem; MemoryBroadcast = bcst; DecoderOption = decoderOption; EncodingValue = encoding; Flags1 = flags1; Flags2 = flags2; Flags3 = flags3; InstrStrFmtOption = instrStrFmtOption; InstrStrFlags = instrStrFlags; InstrStrImpliedOps = instrStrImpliedOps; MandatoryPrefix = mandatoryPrefix; Table = table; LBit = lBit; WBit = wBit; OpCode = opCode; OpCodeLength = opCodeLength; GroupIndex = groupIndex; RmGroupIndex = rmGroupIndex; TupleType = tupleType; OperandSize = operandSize; AddressSize = addressSize; OpKinds = opKinds; PseudoOp = pseudoOp; ControlFlow = flowControl; ConditionCode = conditionCode; BranchKind = branchKind; RflagsRead = read; RflagsUndefined = undefined; RflagsWritten = written; RflagsCleared = cleared; RflagsSet = set; RflagsInfo = null; Cpuid = cpuid; CpuidInternal = null; OpInfo = opInfo; OpInfoEnum = new EnumValue[opInfo.Length]; Fast = fast; Gas = gas; Intel = intel; Masm = masm; Nasm = nasm; }
static bool ParseRflags(string value, ref RflagsBits rflags) { foreach (var c in value) { switch (c) { case RflagsBitsConstants.AF: rflags |= RflagsBits.AF; break; case RflagsBitsConstants.CF: rflags |= RflagsBits.CF; break; case RflagsBitsConstants.OF: rflags |= RflagsBits.OF; break; case RflagsBitsConstants.PF: rflags |= RflagsBits.PF; break; case RflagsBitsConstants.SF: rflags |= RflagsBits.SF; break; case RflagsBitsConstants.ZF: rflags |= RflagsBits.ZF; break; case RflagsBitsConstants.IF: rflags |= RflagsBits.IF; break; case RflagsBitsConstants.DF: rflags |= RflagsBits.DF; break; case RflagsBitsConstants.AC: rflags |= RflagsBits.AC; break; default: return(false); } } return(true); }
public InstrInfo(EnumValue code, CodeInfo codeInfo, EnumValue encoding, EnumValue flowControl, RflagsBits read, RflagsBits undefined, RflagsBits written, RflagsBits cleared, RflagsBits set, EnumValue[] cpuid, OpInfo[] opInfo, InstrInfoFlags flags) { Code = code; CodeInfo = codeInfo; Encoding = encoding; FlowControl = flowControl; RflagsRead = read; RflagsUndefined = undefined; RflagsWritten = written; RflagsCleared = cleared; RflagsSet = set; RflagsInfo = null; Cpuid = cpuid; CpuidInternal = null; OpInfo = opInfo; OpInfoEnum = new EnumValue[opInfo.Length]; Flags = flags; }
/// <summary> /// Creates a new x86 flag register variable. /// </summary> /// <param name="flag">The flag.</param> public X86FlagsRegister(RflagsBits flag) { Flag = flag; }
/// <summary> /// Gets a flag variable by its identifier. /// </summary> /// <param name="flag">The flag identifier.</param> /// <returns>The flag variable.</returns> public X86FlagsRegister GetFlag(RflagsBits flag) => _flags[flag];