Files
VMBL/src/asm/instructions.h
SpookyDervish b7814401c8 i hate my life
2025-12-21 16:26:26 +11:00

35 lines
922 B
C

#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];
} InstructionInfo;
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