| self.registers(a)) def pop(self, a, _): self.emit(0x58 | self.registers(a)) def imul(self, a, b): self.emit(0x48, 0x0f, 0xaf, 0xc0 | self.registers(a, b)) def add(self, a, b): self.emit(0x48, 0x01, 0xc0 | self.registers(b, a)) def sub(self, a, b): self.emit(0x48, 0x29, 0xc0 | self.registers(b, a)) def neg(self, a, _): self.emit(0x48, 0xf7, 0xd8 | self.register(a)) def mov(self, a, b): self.emit(0x48, 0x89, 0xc0 | self.registers(b, a)) def immediate(self, a, number): self.emit(0x48, 0xb8 | self.registers(a), *self.little_endian(number)) Machine Code Generation