Contur 2
Educational OS kernel simulator
Loading...
Searching...
No Matches
contur::RegisterFile Class Reference

The CPU's register bank — holds REGISTER_COUNT (16) registers. More...

#include <register_file.h>

Public Member Functions

 RegisterFile ()
 Constructs register file with all registers initialized to zero.
 ~RegisterFile ()
 Destroys register file.
 RegisterFile (const RegisterFile &)=delete
RegisterFileoperator= (const RegisterFile &)=delete
 RegisterFile (RegisterFile &&) noexcept
 Move-constructs register file state.
RegisterFileoperator= (RegisterFile &&) noexcept
 Move-assigns register file state.
RegisterValue get (Register reg) const noexcept
 Gets the value of the specified register.
RegisterValue get (std::uint8_t index) const noexcept
 Gets the value of a register by raw index.
void set (Register reg, RegisterValue value) noexcept
 Sets the value of the specified register.
void set (std::uint8_t index, RegisterValue value) noexcept
 Sets the value of a register by raw index.
RegisterValue pc () const noexcept
 Convenience accessor for the Program Counter.
void setPc (RegisterValue value) noexcept
 Sets the Program Counter.
RegisterValue sp () const noexcept
 Convenience accessor for the Stack Pointer.
void setSp (RegisterValue value) noexcept
 Sets the Stack Pointer.
void reset () noexcept
 Resets all registers to zero.
std::array< RegisterValue, REGISTER_COUNTsnapshot () const noexcept
 Returns a snapshot of all register values as an array. Used for context switching (save/restore).
void restore (const std::array< RegisterValue, REGISTER_COUNT > &values) noexcept
 Restores register values from a previously taken snapshot.
std::string dump () const
 Returns a formatted string showing all register values.

Private Attributes

std::unique_ptr< Impl > impl_

Friends

std::ostream & operator<< (std::ostream &os, const RegisterFile &rf)
 Stream output operator for debug printing.

Detailed Description

The CPU's register bank — holds REGISTER_COUNT (16) registers.

Provides safe access by Register enum or raw index, bulk save/restore (for context switching), and formatted debug output.

Definition at line 49 of file register_file.h.

Constructor & Destructor Documentation

◆ RegisterFile() [1/3]

contur::RegisterFile::RegisterFile ( )

Constructs register file with all registers initialized to zero.

Referenced by operator<<, operator=(), operator=(), RegisterFile(), and RegisterFile().

◆ ~RegisterFile()

contur::RegisterFile::~RegisterFile ( )

Destroys register file.

◆ RegisterFile() [2/3]

contur::RegisterFile::RegisterFile ( const RegisterFile & )
delete

References RegisterFile().

◆ RegisterFile() [3/3]

contur::RegisterFile::RegisterFile ( RegisterFile && )
noexcept

Move-constructs register file state.

References RegisterFile().

Member Function Documentation

◆ dump()

std::string contur::RegisterFile::dump ( ) const
nodiscard

Returns a formatted string showing all register values.

References dump().

Referenced by dump().

◆ get() [1/2]

RegisterValue contur::RegisterFile::get ( Register reg) const
nodiscardnoexcept

Gets the value of the specified register.

References get().

Referenced by get(), and get().

◆ get() [2/2]

RegisterValue contur::RegisterFile::get ( std::uint8_t index) const
nodiscardnoexcept

Gets the value of a register by raw index.

Precondition
index < REGISTER_COUNT

References get().

◆ operator=() [1/2]

RegisterFile & contur::RegisterFile::operator= ( const RegisterFile & )
delete

References RegisterFile().

◆ operator=() [2/2]

RegisterFile & contur::RegisterFile::operator= ( RegisterFile && )
noexcept

Move-assigns register file state.

References RegisterFile().

◆ pc()

RegisterValue contur::RegisterFile::pc ( ) const
nodiscardnoexcept

Convenience accessor for the Program Counter.

References pc().

Referenced by pc().

◆ reset()

void contur::RegisterFile::reset ( )
noexcept

Resets all registers to zero.

References reset().

Referenced by reset().

◆ restore()

void contur::RegisterFile::restore ( const std::array< RegisterValue, REGISTER_COUNT > & values)
noexcept

Restores register values from a previously taken snapshot.

References contur::REGISTER_COUNT, and restore().

Referenced by restore().

◆ set() [1/2]

void contur::RegisterFile::set ( Register reg,
RegisterValue value )
noexcept

Sets the value of the specified register.

References set().

Referenced by set(), and set().

◆ set() [2/2]

void contur::RegisterFile::set ( std::uint8_t index,
RegisterValue value )
noexcept

Sets the value of a register by raw index.

Precondition
index < REGISTER_COUNT

References set().

◆ setPc()

void contur::RegisterFile::setPc ( RegisterValue value)
noexcept

Sets the Program Counter.

References setPc().

Referenced by setPc().

◆ setSp()

void contur::RegisterFile::setSp ( RegisterValue value)
noexcept

Sets the Stack Pointer.

References setSp().

Referenced by setSp().

◆ snapshot()

std::array< RegisterValue, REGISTER_COUNT > contur::RegisterFile::snapshot ( ) const
nodiscardnoexcept

Returns a snapshot of all register values as an array. Used for context switching (save/restore).

References contur::REGISTER_COUNT, and snapshot().

Referenced by snapshot().

◆ sp()

RegisterValue contur::RegisterFile::sp ( ) const
nodiscardnoexcept

Convenience accessor for the Stack Pointer.

References sp().

Referenced by sp().

◆ operator<<

std::ostream & operator<< ( std::ostream & os,
const RegisterFile & rf )
friend

Stream output operator for debug printing.

References RegisterFile().

Member Data Documentation

◆ impl_

std::unique_ptr<Impl> contur::RegisterFile::impl_
private

Definition at line 113 of file register_file.h.


The documentation for this class was generated from the following file: