Files
VMBL/src/asm/instructions.h

35 lines
922 B
C
Raw Normal View History

2025-12-21 09:44:16 +11:00
#ifndef INSTRUCTIONS_H
#define INSTRUCTIONS_H
2025-12-21 16:26:26 +11:00
#include "../vmbl.h"
2025-12-21 09:44:16 +11:00
#define MAX_ARGS 3
typedef enum
{
2025-12-21 16:26:26 +11:00
ARG_TYPE_NONE,
2025-12-21 09:44:16 +11:00
ARG_TYPE_INT
} ArgType;
typedef struct
{
2025-12-21 16:26:26 +11:00
char *mnemonic;
uint8_t argCount;
ArgType args[MAX_ARGS];
2025-12-21 09:44:16 +11:00
} InstructionInfo;
2025-12-21 16:26:26 +11:00
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