コード例 #1
0
 def test_pop_that_pointer_symbol(self):
     code_writer = CodeWriter()
     i = '1'
     segment = MemorySegmentType.POINTER
     cmd = '@SP\nAM=M-1\n'
     cmd += 'D=M\n@THAT\nM=D\n'
     self.assertEqual(code_writer.get_pop(segment, i), cmd)
コード例 #2
0
 def test_pop_temp(self):
     code_writer = CodeWriter()
     i = '2'
     segment = MemorySegmentType.TEMP
     start_address = '5'
     cmd = '@' + start_address + '\nD=A\n@' + i + '\nD=D+A\n@addr\nM=D\n'
     cmd += '@SP\nAM=M-1\n'
     cmd += 'D=M\n@addr\nA=M\nM=D\n'
     self.assertEqual(code_writer.get_pop(segment, i), cmd)
コード例 #3
0
 def test_pop_static(self):
     code_writer = CodeWriter()
     filename = 'filename1'
     code_writer.set_current_filename(filename)
     i = '5'
     segment = MemorySegmentType.STATIC
     cmd = '@SP\nAM=M-1\n'
     cmd += 'D=M\n@' + filename + '.' + i + '\nM=D\n'
     self.assertEqual(code_writer.get_pop(segment, i), cmd)
コード例 #4
0
 def test_pop_argument(self):
     code_writer = CodeWriter()
     i = '5'
     segment = MemorySegmentType.ARGUMENT
     segment_pointer = 'ARG'
     cmd = '@' + i + '\nD=A\n@' + segment_pointer + '\nD=D+M\n@addr\nM=D\n'
     cmd += '@SP\nAM=M-1\n'
     cmd += 'D=M\n@addr\nA=M\nM=D\n'
     self.assertEqual(code_writer.get_pop(segment, i), cmd)