public override IList <string> Execute(Stack stack) { var assemblyInstructions = new List <string>(); if (_segment == "constant") { assemblyInstructions.Add($"@{_index}"); assemblyInstructions.Add("D=A"); } else if (_segment == "temp") { assemblyInstructions.Add($"@{MemorySegments.GetTempSymbol(_index)}"); assemblyInstructions.Add("D=M"); } else if (_segment == "pointer") { assemblyInstructions.Add($"@{MemorySegments.PredefinedSymbols[_index == "0" ? "this" : "that"]}");
public override IList <string> Execute(Stack stack) { var assemblyInstructions = new List <string>(); if (_segment == "temp") { assemblyInstructions.AddRange(stack.PopTo_D()); //Save to target memory address assemblyInstructions.Add($"@{MemorySegments.GetTempSymbol(_index)}"); assemblyInstructions.Add("M=D"); } else if (_segment == "pointer") { assemblyInstructions.AddRange(stack.PopTo_D()); //Save to target memory address assemblyInstructions.Add($"@{MemorySegments.PredefinedSymbols[_index == "0" ? "this" : "that"]}");