def ret(self, a, b):
self.emit(0xc3)
def push(self, a, _):
self.emit(0x50 | 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