diff --git a/c2logic/instructions.py b/c2logic/instructions.py index 2ec3ba0..5dc60cc 100644 --- a/c2logic/instructions.py +++ b/c2logic/instructions.py @@ -107,18 +107,24 @@ class ParsedInstruction(Instruction): return unescaped.format(**self.__dict__) class ParsedInstructionFactory(): + RETURN_REGISTER = "__rax" + def __init__(self, name, argn, argt, assembly_string): self.argn = argn self.argt = argt self.name = name self.assembly_string = assembly_string + @property + def returns_data(self): + return "{dest}" in self.assembly_string + def __call__(self, *args): ret_instruction = ParsedInstruction() ret_instruction.argt = self.argt ret_instruction.assembly_string = self.assembly_string - if "{dest}" in self.assembly_string: - ret_instruction.__setattr__('dest', args[0]) + if self.returns_data: + ret_instruction.__setattr__('dest', self.RETURN_REGISTER) args = args[1:] ret_instruction.name = self.name for arg, argn in zip(args, self.argn):