def And(self,x1,x2):
if(isinstance(x1,Data)):
y1addr=self.getAbsoluteAdd(x1)
y1=x1.name
if(isinstance(x2,Data)):
y2addr=self.getAbsoluteAdd(x2)
y2=x2.name
#x2 is not a imm
if(x2=='eax'):
tmp=y1
y1=y2
y2=tmp
tmp=y1addr
y1addr=y2addr
y2addr=tmp
if(y1 in self.currentMap and y2 in self.currentMap):
self.gen.asm.append("\tmov eax, "+y1addr+'\n')
self.gen.asm.append("\tand eax, "+y2addr+'\n')
elif(isinstance(y2,str)):
if(y2 in self.currentMap):
self.gen.asm.append('\tand eax, '+y2addr+'\n')
else:
self.gen.asm.append('\tand eax, '+y2+'\n')
else:
if(y2 in self.currentMap):
self.gen.asm.append("\tmov eax, "+y1addr+'\n')
self.gen.asm.append("\tand eax, "+str(y2)+'\n')
return 'eax'
评论列表
文章目录