public BranchCompareNumbersInstruction(CodeLocationTag codeLocation, NumberCompareOperation operation, NumberArithType numberType, HighSsaRegister left, HighSsaRegister right, HighCfgNodeHandle trueNode, HighCfgNodeHandle falseNode) : base(codeLocation) { m_operation = operation; m_trueNode = new HighCfgEdge(this, trueNode); m_falseNode = new HighCfgEdge(this, falseNode); m_left = left; m_right = right; m_numberType = numberType; }
public CompareNumbersInstruction(CodeLocationTag codeLocation, HighSsaRegister dest, NumberCompareOperation operation, NumberArithType numberType, HighSsaRegister left, HighSsaRegister right, int trueValue, int falseValue) : base(codeLocation) { m_dest = dest; m_operation = operation; m_trueValue = trueValue; m_falseValue = falseValue; m_left = left; m_right = right; m_numberType = numberType; }
public override void ReadHeader(TagRepository rpa, CatalogReader catalog, HighMethodBodyParseContext methodBody, HighCfgNodeHandle[] cfgNodes, List<HighSsaRegister> ssaRegisters, CodeLocationTag baseLocation, bool haveDebugInfo, BinaryReader reader) { m_operation = (NumberCompareOperation)reader.ReadByte(); if (m_operation < 0 || m_operation >= NumberCompareOperation.NumHighCompareTypes) throw new Exception("Invalid compare operation"); m_numberType = (NumberArithType)reader.ReadByte(); if (m_numberType < 0 || m_numberType >= NumberArithType.NumHighArithTypes) throw new Exception("Invalid arithmetic type"); m_trueValue = reader.ReadInt32(); m_falseValue = reader.ReadInt32(); }