registers.c 766 Bytes
//
// Created by imanol on 12/25/16.
//

#include <stdio.h>
#include <string.h>
#include "registers.h"

uint16_t regs[NUM_REGISTERS];
uint16_t pc = 0;

void print_regs()
{
    fprintf(stderr,"r0: %02X\n",regs[0]);
    fprintf(stderr,"r1: %02X\n",regs[1]);
    fprintf(stderr,"r2: %02X\n",regs[2]);
    fprintf(stderr,"r3: %02X\n",regs[3]);
    fprintf(stderr,"r4: %02X\n",regs[4]);
    fprintf(stderr,"r5: %02X\n",regs[5]);
    fprintf(stderr,"r6: %02X\n",regs[6]);
    fprintf(stderr,"r7: %02X\n",regs[7]);
    fprintf(stderr,"pc: %02X\n",pc);
}

void dump_regs(uint16_t *dump)
{
    dump[0] = pc;
    memcpy(dump+1,regs,NUM_REGISTERS*sizeof(uint16_t));
}

void load_regs(uint16_t *dump)
{
    pc = dump[0];
    memcpy(regs,dump+1,NUM_REGISTERS*sizeof(uint16_t));
}