Eliminate arch / register mutual dependency

This commit is contained in:
elicn
2021-09-17 00:48:22 +03:00
parent 24bc6ed748
commit 513d595c33
2 changed files with 4 additions and 9 deletions
+3 -4
View File
@@ -109,6 +109,9 @@ class QlRegisterManager:
"""Get register size in bits.
"""
if type(reg) is str:
reg = self.register_mapping[reg]
return self.ql.arch.get_reg_bit(reg)
@@ -146,9 +149,5 @@ class QlRegisterManager:
return self.ql.uc.reg_write(self.uc_sp, value)
def get_uc_reg(self, reg_name: str) -> int:
return self.register_mapping[reg_name]
def create_reverse_mapping(self):
self.reverse_mapping = {v:k for k, v in self.register_mapping.items()}
+1 -5
View File
@@ -4,7 +4,6 @@
#
from struct import pack
from typing import Union
from unicorn import Uc, UC_ARCH_X86, UC_MODE_16, UC_MODE_32, UC_MODE_64
from capstone import Cs, CS_ARCH_X86, CS_MODE_16, CS_MODE_32, CS_MODE_64
@@ -18,10 +17,7 @@ from qiling.exception import QlGDTError
class QlArchIntel(QlArch):
# TODO: generalize this
def get_reg_bit(self, register: Union[str, int]) -> int:
if type(register) is str:
register = self.ql.reg.get_uc_reg(register)
def get_reg_bit(self, register: int) -> int:
# all regs in reg_map_misc are 16 bits except of eflags
if register == UC_X86_REG_EFLAGS:
return self.ql.archbit