def call(self,func,parameters=None):
'''
@funcName: function
@parameters: a dict like{parameter1 name: type, parameter2 ...}
'''
# for vName in self.currentMap:
# if(self.currentMap[vName]['reg']=='eax'):
# self.currentMap[vName]['reg']=0
# self.registers['eax']=0
# self.gen.asm.append('\tmov '+self.currentMap[vName]['addr']+', eax\n')
self.callOffset=0
if(isinstance(func,Data)):
if(func.type.type=='function' and func.type.pointer_count()>0):
self.gen.asm.append('\tcall '+self.currentMap[func.name]["addr"]+'\n')
else:
self.gen.asm.append('\tcall '+func.name+'\n')
else:
self.gen.asm.append('\tcall '+func+'\n')
return 'eax'
评论列表
文章目录