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"]}");
Пример #2
0
        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"]}");