Esempio n. 1
0
 def MOV_R_L(self, args):
     a, b = str(args[0]), self.getLiteral(args[1])
     b = unpack_bytes(b, Registers.sizeOf(a))
     if len(b) > Registers.sizeOf(a):
         raise exp.InvalidOperandSize
         
     return regToCode[a], b
Esempio n. 2
0
    def MUL_R_R(self, args):
        a, b = str(args[0]), str(args[1])

        if Registers.sizeOf(a) != Registers.sizeOf(b):
            raise exp.RegisterSizeMismatch

        try:
            return regToCode[str(args[0])], regToCode[str(args[1])]
        except KeyError:
            raise exp.InvalidOperandRegister
Esempio n. 3
0
    def SUB_R_L(self, args):
        a, b = str(args[0]), self.getLiteral(args[1])

        if ((len(hex(b)) - 2) + 0.5) > Registers.sizeOf(a):
            raise exp.RegisterSizeMismatch

        try:
            return regToCode[str(args[0])], unpack_bytes(b, Registers.sizeOf(a))
        except KeyError:
            raise exp.InvalidOperandRegister
Esempio n. 4
0
 def sub_reg_lit(self):
     a = self.program_scanner.nextRegister()
     b = self.program_scanner.nextBytes(Registers.sizeOf(a))
     c = self.registers.get(a) - b
     self.registers.set(a, c)
Esempio n. 5
0
 def mov_reg_lit(self):
     a = self.program_scanner.nextRegister()
     b = self.program_scanner.nextBytes(Registers.sizeOf(a))
     self.registers.set(a, b)
Esempio n. 6
0
 def mov_reg_mem(self):
     a = self.program_scanner.nextRegister()
     b = self.program_scanner.nextMemory()
     print(b)
     b = self.memory[b:b + Registers.sizeOf(a)]
     self.registers.set(a, pack_bytes(b))