#include "./stack.h" #include #include r16_int StackPop() { #ifdef DO_STACK_CHECKS if (GetRegister(SP).u == 0) { fprintf(stderr, "STACK UNDERFLOW\n"); exit(-1); } #endif SetRegister(SP, (r16_int){ GetRegister(SP).u - 1 }); return GetValue((r16_int){ GetRegister(SP).u + STACK_LOCATION }); } void StackPush(r16_int value) { #ifdef DO_STACK_CHECKS if (GetRegister(SP).u >= STACK_SIZE) { fprintf(stderr, "STACK OVERFLOW\n"); exit(-1); } #endif SetValue((r16_int){ GetRegister(SP).u + STACK_LOCATION }, value); SetRegister(SP, (r16_int){ GetRegister(SP).u + 1 }); }