def test_assemble_rect(self): from assembler import assemble_file assemble_file('rect/rect.asm', 'rect/rect.hack') with open('rect/rect.hack', 'r') as f: observed = f.readlines() with open('rect/rect.cmp', 'r') as f: expected = f.readlines() self.assertEqual(observed, expected)
def test_assemble_pongL(self): from assembler import assemble_file assemble_file('pong/pongL.asm', 'pong/pongL.hack') with open('pong/pongL.hack', 'r') as f: observed = f.readlines() with open('pong/pongL.cmp', 'r') as f: expected = f.readlines() self.assertEqual(observed, expected)
def benchmark(name, module, program): print 'Benchmarking "%s" emulator using "%s"...' % (name, program) emu = module.Emulator() emu.load(assembler.assemble_file(program)) duration = 10 cycles = 0 batch = 100000 start = time.time() while True: emu.n_cycles(batch) cycles += batch elapsed = time.time() - start if elapsed > duration: break cycles_per_second = int(cycles / elapsed) print 'Result: %d cycles per second' % cycles_per_second print
if __name__ == "__main__": import sys if len(sys.argv) != 3: print "Usage: %s PCM_FILE_PREFIX CODE_FILE" % sys.argv[0] sys.exit() try: asm_file = open(sys.argv[2], "rt") except IOError, e: print "Error opening %s: %s" % (sys.argv[2], e.message) sys.exit() try: asm_code, num_lines = assembler.assemble_file(asm_file) except ValueError, e: print "Error assembling %s: %s" % (sys.argv[2], e.message) sys.exit() asm_file.close() # get all the files that start with the same prefix dirname = os.path.dirname(sys.argv[1]) or "." file_prefix = os.path.basename(sys.argv[1]) dirlist = os.listdir(dirname) dirlist = filter( lambda x: x.startswith(file_prefix) and x.endswith(".wav"), dirlist ) dirlist.sort()