Ejemplo n.º 1
0
 def Parse(self, line):
     self.newAddress = None
     self.newTarget = None
     self.newCommand = None
     self.newJump = None
     self.newLabel = None
     parsed = self.oneline.parseString(line)
     if self.newAddress is not None:
         result = Assembler.AddressInstruction(self.newAddress)
         return result
     elif self.newCommand is not None:
         #print(self.newCommand.Expression)
         if self.newTarget is None:
             self.newTarget = Assembler.DestinationBits()
         if self.newJump is None:
             self.newJump = Assembler.JumpBits()
         result = Assembler.ControlInstruction(self.newCommand,
                                               self.newTarget, self.newJump)
         return result
     elif self.newTarget is not None:
         cmd = self.newTarget.ToPlainStr()
         self.newCommand = Assembler.InstructionBits(cmd)
         self.newTarget = Assembler.DestinationBits()
         if self.newJump is None:
             self.newJump = Assembler.JumpBits()
         result = Assembler.ControlInstruction(self.newCommand,
                                               self.newTarget, self.newJump)
     elif self.newLabel is not None:
         result = self.newLabel
         return result
     else:
         return None
Ejemplo n.º 2
0
 def GotCommand(self, cmd):
     self.newCommand = cmd[0]
     #print(cmd)
     if self.newCommand not in Tables.comp_table:
         raise Exception("wrong compute expression")
     self.newCommand = Assembler.InstructionBits(self.newCommand)