labashki/src/stack.h
2024-06-17 03:55:38 +05:00

44 lines
786 B
C

#pragma once
#include <stdint.h>
#include <stdio.h>
#include "config.h"
typedef struct
{
char *name;
char *arg;
uint16_t data;
} Instruction;
typedef struct
{
Instruction program[PROGRAM_MAXSIZE];
uint16_t program_size, program_counter, stacksize;
int pointer;
int16_t labels[MAX_LABELS];
uint16_t memory[];
} Stack;
Stack *program_init(uint16_t stacksize);
void stack_push(Stack *stack, uint16_t data);
uint16_t stack_pop(Stack *stack);
uint16_t stack_peek(Stack *stack);
void kms(Stack *stack, const char *err);
void parse_and_process(Stack *stack, FILE *file);
void repl(Stack *stack);
void stack_init_callback(Stack *stack);
uint16_t stack_pop_callback(void);
void stack_push_callback(uint16_t number);
size_t stack_len_callback(void);