i hate my life

This commit is contained in:
SpookyDervish
2025-12-21 16:26:26 +11:00
parent e92f097afe
commit b7814401c8
10 changed files with 70 additions and 27 deletions

View File

@@ -1,18 +1,35 @@
#ifndef INSTRUCTIONS_H
#define INSTRUCTIONS_H
#include "../vmbl.h"
#define MAX_ARGS 3
typedef enum
{
ARG_TYPE_NONE,
ARG_TYPE_INT
} ArgType;
typedef struct
{
char *mnemonic,
uint8_t argCount,
ArgType args[MAX_ARGS]
char *mnemonic;
uint8_t argCount;
ArgType args[MAX_ARGS];
} InstructionInfo;
#endif // !INSTRUCTIONS_H
static const InstructionInfo instruction_table[] = {
[INSTRUCTION_NOP] = { "nop", 0, { ARG_TYPE_NONE } },
[INSTRUCTION_PUSH] = { "push", 1, { ARG_TYPE_INT } },
[INSTRUCTION_DROP] = { "drop", 1, { ARG_TYPE_INT } },
[INSTRUCTION_ADD] = { "add", 0, { ARG_TYPE_NONE } },
[INSTRUCTION_SUB] = { "sub", 0, { ARG_TYPE_NONE } },
[INSTRUCTION_MUL] = { "mul", 0, { ARG_TYPE_NONE } },
[INSTRUCTION_DIV] = { "div", 0, { ARG_TYPE_NONE } },
[INSTRUCTION_DUPLICATE] = { "dup", 1, { ARG_TYPE_INT } },
[INSTRUCTION_HALT] = { "halt", 0, { ARG_TYPE_NONE } },
};
InstructionType instructionNameToType(char* instName);
#endif // !INSTRUCTIONS_H