def READ(i): x = data.block[i].out data.out.append("pushl $" + x) data.out.append("pushl $scanFormat") register_allocator.save_to_memory() data.out.append("call scanf") data.out.append("addl $8, %esp")
def READ(i): x = data.block[i].out data.out.append('pushl $' + x) data.out.append('pushl $scanFormat') register_allocator.save_to_memory() data.out.append('call scanf') data.out.append('addl $8, %esp')
def PRINT(i): x = data.block[i].out debug(x=x) try: debug(adesc=data.adesc[x]) data.adesc[x] data.out.append("pushl %" + data.adesc[x]) except: data.out.append("pushl " + register_allocator.transform(x)) data.out.append("pushl $printFormat") register_allocator.save_to_memory() data.out.append("call printf") data.out.append("addl $8, %esp")
def PRINT(i): x = data.block[i].out debug(x = x) try : debug(adesc = data.adesc[x]) data.adesc[x] data.out.append('pushl %' + data.adesc[x]) except : data.out.append('pushl ' + x) data.out.append('pushl $printFormat') register_allocator.save_to_memory() data.out.append('call printf') data.out.append('addl $8, %esp')
def block_assembly_generator() : '''Generates assembly code for current block. ''' data.numins = len(data.block) debug(numins = data.numins) register_allocator.initblock() data.print_symbol_table() for i in range(0, len(data.block) - 1): register_allocator.ini() OP_MAP[data.block[i].type](i) i = len(data.block) - 1 if i == -1: return if data.block[i].type in {'call', 'ret', 'goto', 'jg', 'je', 'jle', 'jge', 'je', 'jne'}: register_allocator.save_to_memory() register_allocator.ini() OP_MAP[data.block[i].type](i) else : register_allocator.ini() OP_MAP[data.block[i].type](i) register_allocator.save_to_memory() for line in data.out : print ("\t" + line)
def block_assembly_generator(): """Generates assembly code for current block. """ data.numins = len(data.block) debug(numins=data.numins) register_allocator.initblock() data.print_symbol_table() for i in range(0, len(data.block) - 1): register_allocator.ini() OP_MAP[data.block[i].type](i) i = len(data.block) - 1 if i == -1: return if data.block[i].type in {"call", "ret", "goto", "jg", "je", "jle", "jge", "je", "jne"}: register_allocator.save_to_memory() register_allocator.ini() OP_MAP[data.block[i].type](i) else: register_allocator.ini() OP_MAP[data.block[i].type](i) register_allocator.save_to_memory() for line in data.out: print("\t" + line)
def PRINT_STR(i): inno = data.block[i].no data.out.append("pushl $" + "str" + str(inno)) register_allocator.save_to_memory() data.out.append("call printf") data.out.append("addl $4, %esp")
def PRINT_STR(i): inno = data.block[i].no data.out.append('pushl $' + 'str'+ str(inno)) register_allocator.save_to_memory() data.out.append('call printf') data.out.append('addl $4, %esp')