miasm/arch/aarch64/lifter_model_call.py
#-*- coding:utf-8 -*-
from miasm.ir.analysis import LifterModelCall
from miasm.arch.aarch64.sem import Lifter_Aarch64l, Lifter_Aarch64b
class LifterModelCallAarch64lBase(Lifter_Aarch64l, LifterModelCall):
def __init__(self, loc_db):
Lifter_Aarch64l.__init__(self, loc_db)
self.ret_reg = self.arch.regs.X0
class LifterModelCallAarch64bBase(Lifter_Aarch64b, LifterModelCall):
def __init__(self, loc_db):
Lifter_Aarch64b.__init__(self, loc_db)
self.ret_reg = self.arch.regs.X0
class LifterModelCallAarch64l(LifterModelCallAarch64lBase):
def __init__(self, loc_db):
LifterModelCallAarch64lBase.__init__(self, loc_db)
self.ret_reg = self.arch.regs.X0
def get_out_regs(self, _):
return set([self.ret_reg, self.sp])
def sizeof_char(self):
return 8
def sizeof_short(self):
return 16
def sizeof_int(self):
return 32
def sizeof_long(self):
return 32
def sizeof_pointer(self):
return 32
class LifterModelCallAarch64b(LifterModelCallAarch64bBase, LifterModelCallAarch64l):
def __init__(self, loc_db):
LifterModelCallAarch64bBase.__init__(self, loc_db)
self.ret_reg = self.arch.regs.X0