public static void CreateInstructionList(List <byte[]> networks) { Memory.Program.InstructionList = new List <Instruction>(); int counter = 0; for (int i = 0; i < networks.Count; i++) { for (int j = 0; j < networks[i].Length; j += 2) { byte firstComponent = networks[i][j]; byte secondComponent = networks[i][j + 1]; if (firstComponent == 0xba) { Operators operatorIL; if (j == 0) { operatorIL = Operators.BLOCK; if (counter == 0) { DiagnosticData.AddDataSpecial(); } else { DiagnosticData.AddData(counter, DiagnosticData.Operation.None, DiagnosticData.Symbol.special); } } else { operatorIL = Operators.ANDFUNC; DiagnosticData.AddData(counter, DiagnosticData.Operation.None, DiagnosticData.Symbol.special); } Memory.Program.InstructionList.Add(new CommandRegister.Instruction(operatorIL)); IsLoad = false; IsLoaded = false; } else if (firstComponent == 0xbf) { Operators operatorIL = Operators.ENDBLOCK; Memory.Program.InstructionList.Add(new Instruction(operatorIL)); DiagnosticData.AddData(counter, DiagnosticData.Operation.None, DiagnosticData.Symbol.special); } else if (firstComponent == 0xfb) { Operators operatorIL = Operators.ORFUNC; Memory.Program.InstructionList.Add(new Instruction(operatorIL)); DiagnosticData.AddData(counter, DiagnosticData.Operation.None, DiagnosticData.Symbol.special); IsLoad = false; IsLoaded = false; } else if (firstComponent == 0x41 && secondComponent >= 0x60 && secondComponent <= 0x6f) { Elements operand = new Elements(); Operators operatorIL = Operators.HELPERSET; operand.symbol = Symbol.VAR; operand.name = "Var" + (secondComponent - 0x60).ToString(); if (!Memory.Data.var.ContainsKey(operand.name)) { Memory.Data.var.Add(operand.name, false); } else { Memory.Data.var[operand.name] = false; } //Operators operatorIL = Operators.HELPERSET; DiagnosticData.AddData(counter, DiagnosticData.Operation.None, DiagnosticData.Symbol.special); Memory.Program.InstructionList.Add(new Instruction(operatorIL, operand)); } else if (firstComponent == 0x00 && secondComponent >= 0x60 && secondComponent <= 0x6f) { //helper = Helper.get; Elements operand = new Elements(); Operators operatorIL = Operators.HELPERGET; operand.symbol = Symbol.VAR; operand.name = "Var" + (secondComponent - 0x60).ToString(); DiagnosticData.AddData(counter, DiagnosticData.Operation.None, DiagnosticData.Symbol.standard); Memory.Program.InstructionList.Add(new Instruction(operatorIL, operand)); } else if (firstComponent == 0x00 && secondComponent == 0x14) { } else if (firstComponent == 0x10 && secondComponent == 0x66) { Operators operatorIL = Operators.HELPERUP; Memory.Program.InstructionList.Add(new Instruction(operatorIL)); DiagnosticData.AddData(counter, DiagnosticData.Operation.None, DiagnosticData.Symbol.standard); } else if (firstComponent == 0x68 && secondComponent == 0x2d) { Operators operatorIL = Operators.NOT; Memory.Program.InstructionList.Add(new Instruction(operatorIL)); DiagnosticData.AddData(counter, DiagnosticData.Operation.None, DiagnosticData.Symbol.standard); } else { Instruction instruction = CreateInstructionBasedOnElement(firstComponent, secondComponent, counter); if (instruction != null) { Memory.Program.InstructionList.Add(instruction); } } counter += 2; } IsLoad = false; IsLoaded = false; } }