r16/emu/cpu/register.c
Rose Apollo b30a4b1832 logging
2024-04-22 11:08:57 +00:00

44 lines
816 B
C

#include "./register.h"
#include <stdlib.h>
#include <stdio.h>
r16_int r0, r1, r2, r3, acu, pc, sp;
void LogRegisters()
{
printf(" r0: 0x%X\n r1: 0x%X\n r2: 0x%X\n r3: 0x%X\nACU: 0x%X\n PC: 0x%X\n SP: 0x%X\n",
r0.u, r1.u, r2.u, r3.u, acu.u, pc.u, sp.u);
}
r16_int *GetRegPoint(CpuRegisters reg)
{
switch (reg)
{
case R0:
return &r0;
case R1:
return &r1;
case R2:
return &r2;
case R3:
return &r3;
case ACU:
return &acu;
case PC:
return &pc;
case SP:
return &sp;
}
return NULL;
}
r16_int GetRegister(CpuRegisters reg)
{
return *(GetRegPoint(reg));
}
void SetRegister(CpuRegisters reg, r16_int value)
{
*(GetRegPoint(reg)) = value;
}