7
void rlstk_push(struct rl_stack *s, rl_opcode_t val) {
8
if(s->top == STACKSIZE)
9
rl_fatal(EX_SOFTWARE, "Stack overflow");
10
s->data[s->top++] = val;
13
rl_opcode_t rlstk_pop(struct rl_stack *s) {
15
rl_fatal(EX_SOFTWARE, "Stack underflow");
16
return s->data[--s->top];
19
rl_opcode_t rlstk_peek(struct rl_stack *s, int offset) {
21
rl_fatal(EX_SOFTWARE, "Stack peek undefined");
22
return s->data[s->top - offset - 1];
25
void rlstk_poke(struct rl_stack *s, int offset, rl_opcode_t val) {
27
rl_fatal(EX_SOFTWARE, "Stack peek undefined");
28
s->data[s->top - offset - 1] = val;
31
struct rl_stack *rlstk_new() {
34
s = malloc(sizeof(*s));
36
rl_fatal(EX_SOFTWARE, "ABORT - Can't allocate memory");
37
memset(s, 0, sizeof(*s));
41
void rlstk_free(struct rl_stack *s) {