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
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
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
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)
def mov_reg_lit(self): a = self.program_scanner.nextRegister() b = self.program_scanner.nextBytes(Registers.sizeOf(a)) self.registers.set(a, b)
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))