#ifndef CHERNOBYL_TYPES_H
#define CHERNOBYL_TYPES_H

#include <stdint.h>

typedef uint16_t u16;
typedef int16_t i16;
typedef uint8_t u8;
typedef int8_t i8;

typedef struct registers {
   // Registers = initial_state
   u16 sp; // stack pointer
   u16 sr; // status register
   // General-purpose registers
   //   Caller-saved registers
   u16 r4;  // GPR 4
   u16 r5;  // GPR 5
   u16 r6;  // GPR 6
   u16 r7;  // GPR 7
   u16 r8;  // GPR 8
   u16 r9;  // GPR 9
   u16 r10; // GPR 10
   u16 r11; // GPR 11
   //   Callee-saved registers / function arguments / return value(s)
   u16 r12; // GPR 12 ; arg 3
   u16 r13; // GPR 13 ; arg 2
   u16 r14; // GPR 14 ; arg 1
   u16 r15; // GPR 15 ; arg 0
} re;

#endif
