From c0e08b6c238f44055595a7fffd25e653a96af15c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20Wei=C3=9F?= <leon.weiss@rub.de> Date: Thu, 3 Aug 2023 12:50:02 +0000 Subject: [PATCH] Add functions to selectively obtain lower/upper 8 bit regs --- irdb-libs/libIRDB-util/src/registers.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/irdb-libs/libIRDB-util/src/registers.cpp b/irdb-libs/libIRDB-util/src/registers.cpp index b8d02ec4a..8239122ba 100644 --- a/irdb-libs/libIRDB-util/src/registers.cpp +++ b/irdb-libs/libIRDB-util/src/registers.cpp @@ -429,11 +429,18 @@ RegisterID_t IRDB_SDK::convertRegisterTo16bit(const RegisterID_t p_reg) } } +// Does not guarantee, whether the returned register is the lower or upper half +// of the lowest 16 bits RegisterID_t IRDB_SDK::convertRegisterTo8bit(const RegisterID_t p_reg) { if (is8bitRegister(p_reg)) return p_reg; + return convertRegisterTo8bitLower(p_reg); +} + +RegisterID_t IRDB_SDK::convertRegisterTo8bitLower(const RegisterID_t p_reg) +{ switch (p_reg) { case rn_RAX: case rn_EAX: case rn_AX: return rn_AL; @@ -458,3 +465,16 @@ RegisterID_t IRDB_SDK::convertRegisterTo8bit(const RegisterID_t p_reg) } } +RegisterID_t IRDB_SDK::convertRegisterTo8bitUpper(const RegisterID_t p_reg) +{ + switch (convertRegisterTo8bitLower(p_reg)) + { + case rn_AL: return rn_AH; + case rn_BL: return rn_BH; + case rn_CL: return rn_CH; + case rn_DL: return rn_DH; + default: + return rn_UNKNOWN; + break; + } +} \ No newline at end of file -- GitLab