44 lines
816 B
C
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;
|
|
} |