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