register finalization

This commit is contained in:
black
2025-06-12 15:04:00 +03:00
parent ce2071f42b
commit 39b9d1bf54
2 changed files with 33 additions and 16 deletions

View File

@@ -5,17 +5,15 @@
#include "Register.h" #include "Register.h"
Register* Register::getInstance() { Register& Register::getInstance() {
if (m_instance == nullptr) { static Register instance;
m_instance = new Register(); return instance;
} else {
m_instance = new Register();
}
return m_instance;
} }
void Register::setRegister() { void Register::setRegister(const int reg, const int value) {
m_registers[reg] = value;
} }
int Register::getRegister(int r) { int Register::getRegister(const int reg) const {
return m_registers[reg];
} }

View File

@@ -5,6 +5,8 @@
#ifndef REGISTER_H #ifndef REGISTER_H
#define REGISTER_H #define REGISTER_H
/// Eine Registerklasse als Singleton implementiert.
/// Als Speicher (Registers) wird ein int Array genutzt.
class Register { class Register {
@@ -12,19 +14,36 @@ class Register {
private: private:
Register() = default; Register() = default;
/// Singleton instance
static Register *m_instance; static Register *m_instance;
/// "Echter" Register Speicher
int m_registers[32];
public: public:
static Register* getInstance(); /// Singleton Logik
Register(const Register &) = delete;
Register(const Register &&) = delete;
Register& operator=(const Register &) = delete;
Register& operator=(const Register &&) = delete;
~Register() = default;
void setRegister(); static Register& getInstance();
int getRegister(int r); /**
* Speichert den angegebenen Wert im angegebenen Register
*
* @param reg Die Position des Registers
* @param value Der Wert für das Register
*/
void setRegister(int reg, int value);
/**
*
* @param reg Die Position des Registers
* @return Der Wert des Registers
*/
int getRegister(int reg) const;
}; };
Register *Register::m_instance = nullptr;
#endif //REGISTER_H #endif //REGISTER_H