Пример #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
Пример #2
0
 def GotTarget(self, trg):
     self.newTarget = trg[0]
     #print(trg)
     if self.newTarget not in Tables.dest_table:
         raise Exception("wrong target expression")
     self.newTarget = Assembler.DestinationBits("A" in trg[0], "D"
                                                in trg[0], "M" in trg[0])