示例#1
0
		public void OpRRITest()
		{
			var Results = new Queue<int>();

			var InstructionNames = new[] { "addi", "addiu", "andi", "ori", "xori" };
			var Numbers = new int[] { 0, 0, 1, -99999, 77777, -1, 0x12345678, unchecked((int)0x87654321), int.MaxValue, int.MaxValue - 1, int.MinValue, int.MinValue + 1 };
			int ResultOffset = 17;
			int InputOffset = 0;

			foreach (var instructionName in InstructionNames)
			{
				for (int n = 0; n < Numbers.Length; n++)
				{
					string Assembly = "";

					for (int m = 0; m < Numbers.Length; m++)
					{
						CpuThreadState.GPR[InputOffset + m] = Numbers[m];

						Assembly += String.Format(
							"{0} r{1}, r{2}, {3}\n",
							instructionName,
							m + ResultOffset,
							n + InputOffset,
							(Numbers[m] & 0xFFFF)
						);
					}

					//Console.WriteLine("{0}", Assembly);

					ExecuteAssembly(Assembly);

					for (int m = 0; m < Numbers.Length; m++)
					{
						Results.Enqueue(CpuThreadState.GPR[m + ResultOffset]);
					}
				}
			}

			var ExpectedLines = new Queue<string>(stringToLines(@"
				addi.0: 0,0,1,31073,12241,-1,22136,17185,-1,-2,0,1,
				addi.0: 0,0,1,31073,12241,-1,22136,17185,-1,-2,0,1,
				addi.1: 1,1,2,31074,12242,0,22137,17186,0,-1,1,2,
				addi.-99999: -99999,-99999,-99998,-68926,-87758,-100000,-77863,-82814,-100000,-100001,-99999,-99998,
				addi.77777: 77777,77777,77778,108850,90018,77776,99913,94962,77776,77775,77777,77778,
				addi.-1: -1,-1,0,31072,12240,-2,22135,17184,-2,-3,-1,0,
				addi.305419896: 305419896,305419896,305419897,305450969,305432137,305419895,305442032,305437081,305419895,305419894,305419896,305419897,
				addi.-2023406815: -2023406815,-2023406815,-2023406814,-2023375742,-2023394574,-2023406816,-2023384679,-2023389630,-2023406816,-2023406817,-2023406815,-2023406814,
				addi.2147483647: 2147483647,2147483647,-2147483648,-2147452576,-2147471408,2147483646,-2147461513,-2147466464,2147483646,2147483645,2147483647,-2147483648,
				addi.2147483646: 2147483646,2147483646,2147483647,-2147452577,-2147471409,2147483645,-2147461514,-2147466465,2147483645,2147483644,2147483646,2147483647,
				addi.-2147483648: -2147483648,-2147483648,-2147483647,-2147452575,-2147471407,2147483647,-2147461512,-2147466463,2147483647,2147483646,-2147483648,-2147483647,
				addi.-2147483647: -2147483647,-2147483647,-2147483646,-2147452574,-2147471406,-2147483648,-2147461511,-2147466462,-2147483648,2147483647,-2147483647,-2147483646,
				addiu.0: 0,0,1,31073,12241,-1,22136,17185,-1,-2,0,1,
				addiu.0: 0,0,1,31073,12241,-1,22136,17185,-1,-2,0,1,
				addiu.1: 1,1,2,31074,12242,0,22137,17186,0,-1,1,2,
				addiu.-99999: -99999,-99999,-99998,-68926,-87758,-100000,-77863,-82814,-100000,-100001,-99999,-99998,
				addiu.77777: 77777,77777,77778,108850,90018,77776,99913,94962,77776,77775,77777,77778,
				addiu.-1: -1,-1,0,31072,12240,-2,22135,17184,-2,-3,-1,0,
				addiu.305419896: 305419896,305419896,305419897,305450969,305432137,305419895,305442032,305437081,305419895,305419894,305419896,305419897,
				addiu.-2023406815: -2023406815,-2023406815,-2023406814,-2023375742,-2023394574,-2023406816,-2023384679,-2023389630,-2023406816,-2023406817,-2023406815,-2023406814,
				addiu.2147483647: 2147483647,2147483647,-2147483648,-2147452576,-2147471408,2147483646,-2147461513,-2147466464,2147483646,2147483645,2147483647,-2147483648,
				addiu.2147483646: 2147483646,2147483646,2147483647,-2147452577,-2147471409,2147483645,-2147461514,-2147466465,2147483645,2147483644,2147483646,2147483647,
				addiu.-2147483648: -2147483648,-2147483648,-2147483647,-2147452575,-2147471407,2147483647,-2147461512,-2147466463,2147483647,2147483646,-2147483648,-2147483647,
				addiu.-2147483647: -2147483647,-2147483647,-2147483646,-2147452574,-2147471406,-2147483648,-2147461511,-2147466462,-2147483648,2147483647,-2147483647,-2147483646,
				andi.0: 0,0,0,0,0,0,0,0,0,0,0,0,
				andi.0: 0,0,0,0,0,0,0,0,0,0,0,0,
				andi.1: 0,0,1,1,1,1,0,1,1,0,0,1,
				andi.-99999: 0,0,1,31073,10561,31073,20576,16673,31073,31072,0,1,
				andi.77777: 0,0,1,10561,12241,12241,1616,769,12241,12240,0,1,
				andi.-1: 0,0,1,31073,12241,65535,22136,17185,65535,65534,0,1,
				andi.305419896: 0,0,0,20576,1616,22136,22136,16928,22136,22136,0,0,
				andi.-2023406815: 0,0,1,16673,769,17185,16928,17185,17185,17184,0,1,
				andi.2147483647: 0,0,1,31073,12241,65535,22136,17185,65535,65534,0,1,
				andi.2147483646: 0,0,0,31072,12240,65534,22136,17184,65534,65534,0,0,
				andi.-2147483648: 0,0,0,0,0,0,0,0,0,0,0,0,
				andi.-2147483647: 0,0,1,1,1,1,0,1,1,0,0,1,
				ori.0: 0,0,1,31073,12241,65535,22136,17185,65535,65534,0,1,
				ori.0: 0,0,1,31073,12241,65535,22136,17185,65535,65534,0,1,
				ori.1: 1,1,1,31073,12241,65535,22137,17185,65535,65535,1,1,
				ori.-99999: -99999,-99999,-99999,-99999,-98319,-65537,-98439,-99487,-65537,-65537,-99999,-99999,
				ori.77777: 77777,77777,77777,98289,77777,131071,98297,94193,131071,131071,77777,77777,
				ori.-1: -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
				ori.305419896: 305419896,305419896,305419897,305430393,305430521,305463295,305419896,305420153,305463295,305463294,305419896,305419897,
				ori.-2023406815: -2023406815,-2023406815,-2023406815,-2023392415,-2023395343,-2023358465,-2023401607,-2023406815,-2023358465,-2023358465,-2023406815,-2023406815,
				ori.2147483647: 2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,2147483647,
				ori.2147483646: 2147483646,2147483646,2147483647,2147483647,2147483647,2147483647,2147483646,2147483647,2147483647,2147483646,2147483646,2147483647,
				ori.-2147483648: -2147483648,-2147483648,-2147483647,-2147452575,-2147471407,-2147418113,-2147461512,-2147466463,-2147418113,-2147418114,-2147483648,-2147483647,
				ori.-2147483647: -2147483647,-2147483647,-2147483647,-2147452575,-2147471407,-2147418113,-2147461511,-2147466463,-2147418113,-2147418113,-2147483647,-2147483647,
				xori.0: 0,0,1,31073,12241,65535,22136,17185,65535,65534,0,1,
				xori.0: 0,0,1,31073,12241,65535,22136,17185,65535,65534,0,1,
				xori.1: 1,1,0,31072,12240,65534,22137,17184,65534,65535,1,0,
				xori.-99999: -99999,-99999,-100000,-131072,-108880,-96610,-119015,-116160,-96610,-96609,-99999,-100000,
				xori.77777: 77777,77777,77776,87728,65536,118830,96681,93424,118830,118831,77777,77776,
				xori.-1: -1,-1,-2,-31074,-12242,-65536,-22137,-17186,-65536,-65535,-1,-2,
				xori.305419896: 305419896,305419896,305419897,305409817,305428905,305441159,305397760,305403225,305441159,305441158,305419896,305419897,
				xori.-2023406815: -2023406815,-2023406815,-2023406816,-2023409088,-2023396112,-2023375650,-2023418535,-2023424000,-2023375650,-2023375649,-2023406815,-2023406816,
				xori.2147483647: 2147483647,2147483647,2147483646,2147452574,2147471406,2147418112,2147461511,2147466462,2147418112,2147418113,2147483647,2147483646,
				xori.2147483646: 2147483646,2147483646,2147483647,2147452575,2147471407,2147418113,2147461510,2147466463,2147418113,2147418112,2147483646,2147483647,
				xori.-2147483648: -2147483648,-2147483648,-2147483647,-2147452575,-2147471407,-2147418113,-2147461512,-2147466463,-2147418113,-2147418114,-2147483648,-2147483647,
				xori.-2147483647: -2147483647,-2147483647,-2147483648,-2147452576,-2147471408,-2147418114,-2147461511,-2147466464,-2147418114,-2147418113,-2147483647,-2147483648,
			"));

			foreach (var instructionName in InstructionNames)
			{
				foreach (var LeftNumber in Numbers)
				{
					var Line = String.Format("{0}.{1}: ", instructionName, LeftNumber);
					foreach (var RightNumber in Numbers)
					{
						Line += String.Format("{0},", Results.Dequeue());
					}
					//Console.WriteLine(Line);
					Assert.AreEqual(ExpectedLines.Dequeue(), Line);
				}
			}
		}
示例#2
0
		public void BranchFullTest()
		{
			var RegsV = new[] {
				"r10, r10",
				"r10, r11",
				"r10, r12",

				"r11, r10",
				"r11, r11",
				"r11, r12",

				"r12, r10",
				"r12, r11",
				"r12, r12",
			};

			var Regs0 = new[] {
				"r10",
				"r11",
				"r12",
			};

			Func<String, String[], IEnumerable<int>> Generator = (String Branch, String[] RegsList) =>
			{
				var Results = new List<int>();
				foreach (var Regs in RegsList)
				{
					ExecuteAssembly(
						@"
							li r10, -1
							li r11,  0
							li r12, +1
							%BRANCH% %REGS%, label_yes
							li r1, 2
							b label_no
							nop

						label_yes:
							li r1, 1
							b label_end
							nop

						label_no:
							li r1, 0
							b label_end
							nop

						label_end:
							nop
						"
						.Replace("%BRANCH%", Branch)
						.Replace("%REGS%", Regs)
					);

					Results.Add(CpuThreadState.GPR[1]);
				}

				return Results;
			};

			Assert.AreEqual("[1,0,0,0,1,0,0,0,1]", Generator("beq", RegsV).ToJson());
			Assert.AreEqual("[0,1,1,1,0,1,1,1,0]", Generator("bne", RegsV).ToJson());

			Assert.AreEqual("[1,0,0]", Generator("bltz", Regs0).ToJson());
			Assert.AreEqual("[1,1,0]", Generator("blez", Regs0).ToJson());
			Assert.AreEqual("[0,0,1]", Generator("bgtz", Regs0).ToJson());
			Assert.AreEqual("[0,1,1]", Generator("bgez", Regs0).ToJson());

			//Assert.AreEqual("[0,0,1]", Generator("bgtzl", Regs0).ToJson());
		}
示例#3
0
		public void OpRRRTest()
		{
			var Results = new Queue<int>();

			var InstructionNames = new[] { "add", "addu", "sub", "subu", "and", "or", "xor", "nor" };
			var Numbers = new int[] { 0, 0, 1, -99999, 77777, -1, 0x12345678, unchecked((int)0x87654321), int.MaxValue, int.MaxValue - 1, int.MinValue, int.MinValue + 1 };
			int ResultOffset = 17;
			int InputOffset = 0;

			foreach (var instructionName in InstructionNames)
			{
				for (int n = 0; n < Numbers.Length; n++)
				{
					string Assembly = "";

					for (int m = 0; m < Numbers.Length; m++)
					{
						CpuThreadState.GPR[InputOffset + m] = Numbers[m];

						Assembly += String.Format(
							"{0} r{1}, r{2}, r{3}\n",
							instructionName,
							m + ResultOffset,
							n + InputOffset,
							m + InputOffset
						);
					}

					//Console.WriteLine("{0}", Assembly);

					ExecuteAssembly(Assembly);

					for (int m = 0; m < Numbers.Length; m++)
					{
						Results.Enqueue(CpuThreadState.GPR[m + ResultOffset]);
					}
				}
			}

			var ExpectedLines = new Queue<string>(stringToLines(@"
				add.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647,
				add.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647,
				add.1: 1,1,2,-99998,77778,0,305419897,-2023406814,-2147483648,2147483647,-2147483647,-2147483646,
				add.-99999: -99999,-99999,-99998,-199998,-22222,-100000,305319897,-2023506814,2147383648,2147383647,2147383649,2147383650,
				add.77777: 77777,77777,77778,-22222,155554,77776,305497673,-2023329038,-2147405872,-2147405873,-2147405871,-2147405870,
				add.-1: -1,-1,0,-100000,77776,-2,305419895,-2023406816,2147483646,2147483645,2147483647,-2147483648,
				add.305419896: 305419896,305419896,305419897,305319897,305497673,305419895,610839792,-1717986919,-1842063753,-1842063754,-1842063752,-1842063751,
				add.-2023406815: -2023406815,-2023406815,-2023406814,-2023506814,-2023329038,-2023406816,-1717986919,248153666,124076832,124076831,124076833,124076834,
				add.2147483647: 2147483647,2147483647,-2147483648,2147383648,-2147405872,2147483646,-1842063753,124076832,-2,-3,-1,0,
				add.2147483646: 2147483646,2147483646,2147483647,2147383647,-2147405873,2147483645,-1842063754,124076831,-3,-4,-2,-1,
				add.-2147483648: -2147483648,-2147483648,-2147483647,2147383649,-2147405871,2147483647,-1842063752,124076833,-1,-2,0,1,
				add.-2147483647: -2147483647,-2147483647,-2147483646,2147383650,-2147405870,-2147483648,-1842063751,124076834,0,-1,1,2,
				addu.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647,
				addu.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647,
				addu.1: 1,1,2,-99998,77778,0,305419897,-2023406814,-2147483648,2147483647,-2147483647,-2147483646,
				addu.-99999: -99999,-99999,-99998,-199998,-22222,-100000,305319897,-2023506814,2147383648,2147383647,2147383649,2147383650,
				addu.77777: 77777,77777,77778,-22222,155554,77776,305497673,-2023329038,-2147405872,-2147405873,-2147405871,-2147405870,
				addu.-1: -1,-1,0,-100000,77776,-2,305419895,-2023406816,2147483646,2147483645,2147483647,-2147483648,
				addu.305419896: 305419896,305419896,305419897,305319897,305497673,305419895,610839792,-1717986919,-1842063753,-1842063754,-1842063752,-1842063751,
				addu.-2023406815: -2023406815,-2023406815,-2023406814,-2023506814,-2023329038,-2023406816,-1717986919,248153666,124076832,124076831,124076833,124076834,
				addu.2147483647: 2147483647,2147483647,-2147483648,2147383648,-2147405872,2147483646,-1842063753,124076832,-2,-3,-1,0,
				addu.2147483646: 2147483646,2147483646,2147483647,2147383647,-2147405873,2147483645,-1842063754,124076831,-3,-4,-2,-1,
				addu.-2147483648: -2147483648,-2147483648,-2147483647,2147383649,-2147405871,2147483647,-1842063752,124076833,-1,-2,0,1,
				addu.-2147483647: -2147483647,-2147483647,-2147483646,2147383650,-2147405870,-2147483648,-1842063751,124076834,0,-1,1,2,
				sub.0: 0,0,-1,99999,-77777,1,-305419896,2023406815,-2147483647,-2147483646,-2147483648,2147483647,
				sub.0: 0,0,-1,99999,-77777,1,-305419896,2023406815,-2147483647,-2147483646,-2147483648,2147483647,
				sub.1: 1,1,0,100000,-77776,2,-305419895,2023406816,-2147483646,-2147483645,-2147483647,-2147483648,
				sub.-99999: -99999,-99999,-100000,0,-177776,-99998,-305519895,2023306816,2147383650,2147383651,2147383649,2147383648,
				sub.77777: 77777,77777,77776,177776,0,77778,-305342119,2023484592,-2147405870,-2147405869,-2147405871,-2147405872,
				sub.-1: -1,-1,-2,99998,-77778,0,-305419897,2023406814,-2147483648,-2147483647,2147483647,2147483646,
				sub.305419896: 305419896,305419896,305419895,305519895,305342119,305419897,0,-1966140585,-1842063751,-1842063750,-1842063752,-1842063753,
				sub.-2023406815: -2023406815,-2023406815,-2023406816,-2023306816,-2023484592,-2023406814,1966140585,0,124076834,124076835,124076833,124076832,
				sub.2147483647: 2147483647,2147483647,2147483646,-2147383650,2147405870,-2147483648,1842063751,-124076834,0,1,-1,-2,
				sub.2147483646: 2147483646,2147483646,2147483645,-2147383651,2147405869,2147483647,1842063750,-124076835,-1,0,-2,-3,
				sub.-2147483648: -2147483648,-2147483648,2147483647,-2147383649,2147405871,-2147483647,1842063752,-124076833,1,2,0,-1,
				sub.-2147483647: -2147483647,-2147483647,-2147483648,-2147383648,2147405872,-2147483646,1842063753,-124076832,2,3,1,0,
				subu.0: 0,0,-1,99999,-77777,1,-305419896,2023406815,-2147483647,-2147483646,-2147483648,2147483647,
				subu.0: 0,0,-1,99999,-77777,1,-305419896,2023406815,-2147483647,-2147483646,-2147483648,2147483647,
				subu.1: 1,1,0,100000,-77776,2,-305419895,2023406816,-2147483646,-2147483645,-2147483647,-2147483648,
				subu.-99999: -99999,-99999,-100000,0,-177776,-99998,-305519895,2023306816,2147383650,2147383651,2147383649,2147383648,
				subu.77777: 77777,77777,77776,177776,0,77778,-305342119,2023484592,-2147405870,-2147405869,-2147405871,-2147405872,
				subu.-1: -1,-1,-2,99998,-77778,0,-305419897,2023406814,-2147483648,-2147483647,2147483647,2147483646,
				subu.305419896: 305419896,305419896,305419895,305519895,305342119,305419897,0,-1966140585,-1842063751,-1842063750,-1842063752,-1842063753,
				subu.-2023406815: -2023406815,-2023406815,-2023406816,-2023306816,-2023484592,-2023406814,1966140585,0,124076834,124076835,124076833,124076832,
				subu.2147483647: 2147483647,2147483647,2147483646,-2147383650,2147405870,-2147483648,1842063751,-124076834,0,1,-1,-2,
				subu.2147483646: 2147483646,2147483646,2147483645,-2147383651,2147405869,2147483647,1842063750,-124076835,-1,0,-2,-3,
				subu.-2147483648: -2147483648,-2147483648,2147483647,-2147383649,2147405871,-2147483647,1842063752,-124076833,1,2,0,-1,
				subu.-2147483647: -2147483647,-2147483647,-2147483648,-2147383648,2147405872,-2147483646,1842063753,-124076832,2,3,1,0,
				and.0: 0,0,0,0,0,0,0,0,0,0,0,0,
				and.0: 0,0,0,0,0,0,0,0,0,0,0,0,
				and.1: 0,0,1,1,1,1,0,1,1,0,0,1,
				and.-99999: 0,0,1,-99999,10561,-99999,305418336,-2023472863,2147383649,2147383648,-2147483648,-2147483647,
				and.77777: 0,0,1,10561,77777,77777,1616,66305,77777,77776,0,1,
				and.-1: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647,
				and.305419896: 0,0,0,305418336,1616,305419896,305419896,35930656,305419896,305419896,0,0,
				and.-2023406815: 0,0,1,-2023472863,66305,-2023406815,35930656,-2023406815,124076833,124076832,-2147483648,-2147483647,
				and.2147483647: 0,0,1,2147383649,77777,2147483647,305419896,124076833,2147483647,2147483646,0,1,
				and.2147483646: 0,0,0,2147383648,77776,2147483646,305419896,124076832,2147483646,2147483646,0,0,
				and.-2147483648: 0,0,0,-2147483648,0,-2147483648,0,-2147483648,0,0,-2147483648,-2147483648,
				and.-2147483647: 0,0,1,-2147483647,1,-2147483647,0,-2147483647,1,0,-2147483648,-2147483647,
				or.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647,
				or.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647,
				or.1: 1,1,1,-99999,77777,-1,305419897,-2023406815,2147483647,2147483647,-2147483647,-2147483647,
				or.-99999: -99999,-99999,-99999,-99999,-32783,-1,-98439,-33951,-1,-1,-99999,-99999,
				or.77777: 77777,77777,77777,-32783,77777,-1,305496057,-2023395343,2147483647,2147483647,-2147405871,-2147405871,
				or.-1: -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
				or.305419896: 305419896,305419896,305419897,-98439,305496057,-1,305419896,-1753917575,2147483647,2147483646,-1842063752,-1842063751,
				or.-2023406815: -2023406815,-2023406815,-2023406815,-33951,-2023395343,-1,-1753917575,-2023406815,-1,-1,-2023406815,-2023406815,
				or.2147483647: 2147483647,2147483647,2147483647,-1,2147483647,-1,2147483647,-1,2147483647,2147483647,-1,-1,
				or.2147483646: 2147483646,2147483646,2147483647,-1,2147483647,-1,2147483646,-1,2147483647,2147483646,-2,-1,
				or.-2147483648: -2147483648,-2147483648,-2147483647,-99999,-2147405871,-1,-1842063752,-2023406815,-1,-2,-2147483648,-2147483647,
				or.-2147483647: -2147483647,-2147483647,-2147483647,-99999,-2147405871,-1,-1842063751,-2023406815,-1,-1,-2147483647,-2147483647,
				xor.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647,
				xor.0: 0,0,1,-99999,77777,-1,305419896,-2023406815,2147483647,2147483646,-2147483648,-2147483647,
				xor.1: 1,1,0,-100000,77776,-2,305419897,-2023406816,2147483646,2147483647,-2147483647,-2147483648,
				xor.-99999: -99999,-99999,-100000,0,-43344,99998,-305516775,2023438912,-2147383650,-2147383649,2147383649,2147383648,
				xor.77777: 77777,77777,77776,-43344,0,-77778,305494441,-2023461648,2147405870,2147405871,-2147405871,-2147405872,
				xor.-1: -1,-1,-2,99998,-77778,0,-305419897,2023406814,-2147483648,-2147483647,2147483647,2147483646,
				xor.305419896: 305419896,305419896,305419897,-305516775,305494441,-305419897,0,-1789848231,1842063751,1842063750,-1842063752,-1842063751,
				xor.-2023406815: -2023406815,-2023406815,-2023406816,2023438912,-2023461648,2023406814,-1789848231,0,-124076834,-124076833,124076833,124076832,
				xor.2147483647: 2147483647,2147483647,2147483646,-2147383650,2147405870,-2147483648,1842063751,-124076834,0,1,-1,-2,
				xor.2147483646: 2147483646,2147483646,2147483647,-2147383649,2147405871,-2147483647,1842063750,-124076833,1,0,-2,-1,
				xor.-2147483648: -2147483648,-2147483648,-2147483647,2147383649,-2147405871,2147483647,-1842063752,124076833,-1,-2,0,1,
				xor.-2147483647: -2147483647,-2147483647,-2147483648,2147383648,-2147405872,2147483646,-1842063751,124076832,-2,-1,1,0,
				nor.0: -1,-1,-2,99998,-77778,0,-305419897,2023406814,-2147483648,-2147483647,2147483647,2147483646,
				nor.0: -1,-1,-2,99998,-77778,0,-305419897,2023406814,-2147483648,-2147483647,2147483647,2147483646,
				nor.1: -2,-2,-2,99998,-77778,0,-305419898,2023406814,-2147483648,-2147483648,2147483646,2147483646,
				nor.-99999: 99998,99998,99998,99998,32782,0,98438,33950,0,0,99998,99998,
				nor.77777: -77778,-77778,-77778,32782,-77778,0,-305496058,2023395342,-2147483648,-2147483648,2147405870,2147405870,
				nor.-1: 0,0,0,0,0,0,0,0,0,0,0,0,
				nor.305419896: -305419897,-305419897,-305419898,98438,-305496058,0,-305419897,1753917574,-2147483648,-2147483647,1842063751,1842063750,
				nor.-2023406815: 2023406814,2023406814,2023406814,33950,2023395342,0,1753917574,2023406814,0,0,2023406814,2023406814,
				nor.2147483647: -2147483648,-2147483648,-2147483648,0,-2147483648,0,-2147483648,0,-2147483648,-2147483648,0,0,
				nor.2147483646: -2147483647,-2147483647,-2147483648,0,-2147483648,0,-2147483647,0,-2147483648,-2147483647,1,0,
				nor.-2147483648: 2147483647,2147483647,2147483646,99998,2147405870,0,1842063751,2023406814,0,1,2147483647,2147483646,
				nor.-2147483647: 2147483646,2147483646,2147483646,99998,2147405870,0,1842063750,2023406814,0,0,2147483646,2147483646,
			"));

			foreach (var instructionName in InstructionNames)
			{
				foreach (var LeftNumber in Numbers)
				{
					var Line = String.Format("{0}.{1}: ", instructionName, LeftNumber);
					foreach (var RightNumber in Numbers)
					{
						Line += String.Format("{0},", Results.Dequeue());
					}
					Console.WriteLine(Line);
					//Assert.AreEqual(ExpectedLines.Dequeue(), Line);
				}
			}
		}