Exemplo n.º 1
0
def testLabels():
        p = Parser.Program()
        p.AddLabel("loop")
        p.AddOperation(Assembler.AddressInstruction(56))
        assert(p.table.HasSymbol("loop"))
        assert(p.table.GetSymbolValue("loop") == 0)
        p.AddOperation(Assembler.AddressInstruction("loop"))
        p.ReplaceSymbols()
        text = p.ToBinary()
        print(text)
Exemplo n.º 2
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