diff --git a/irdb-libs/libIRDB-util/src/registers.cpp b/irdb-libs/libIRDB-util/src/registers.cpp index b8d02ec4ac8aeab3ef3132aa6c90a3b6c323f81d..8239122ba74778120463d7d536cadd2775aa16fc 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