| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #!/usr/bin/python
- from parser import parse_file
- from basic_block import find_basic_blocks
- from optimizer import optimize_blocks, optimize_global
- from writer import write_statements
- if __name__ == '__main__':
- from sys import argv, exit
- if len(argv) < 2:
- print 'Usage: python %s FILE' % argv[0]
- exit(1)
- # Parse File
- statements = parse_file(argv[1])
- st_original = len(statements)
- # Optimize on a global level
- statements = optimize_global(statements)
- st_aft_global = len(statements)
- # Create basic blocks
- blocks = find_basic_blocks(statements)
- # Optimize basic blocks
- statements = optimize_blocks(blocks)
- # Rewrite to assembly
- out = write_statements(statements)
- print "Optimization:"
- print "Original statements:", st_original
- print "After global optimization:", st_aft_global
- print "After basic blocks optimization:", len(statements)
- if len(argv) > 2:
- # Save output assembly
- f = open(argv[2], 'w+')
- f.write(out)
- f.close()
|