From 1961b4b237083f4cfac9ca6b249c1d6cb665d149 Mon Sep 17 00:00:00 2001 From: Paul Oliver Date: Tue, 14 Jul 2026 17:29:02 +0200 Subject: Initial (refactor) --- arch/v1/arch_inst.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 arch/v1/arch_inst.c (limited to 'arch/v1/arch_inst.c') diff --git a/arch/v1/arch_inst.c b/arch/v1/arch_inst.c new file mode 100644 index 0000000..4d75ede --- /dev/null +++ b/arch/v1/arch_inst.c @@ -0,0 +1,40 @@ +// file : arch/v1/arch_inst.c +// project : Salis-VM +// author : Paul Oliver + +#include +#include +#include +#include + +#define ARCH_EXPORT_INST_COUNT +#include "arch_spec.h" +#include "arch_inst.h" + +wchar_t arch_inst_symbol(uint8_t inst) { + assert(inst < ARCH_INST_COUNT); + assert(inst_enum_count == ARCH_INST_COUNT); + + switch (inst) { +#define ARCH_SPEC_INST(label, symbol, core) case label: return symbol; + ARCH_SPEC_INST_SET(core) +#undef ARCH_SPEC_INST + } + + assert(false); + return L'\0'; +} + +const char *arch_inst_mnemonic(uint8_t inst) { + assert(inst < ARCH_INST_COUNT); + assert(inst_enum_count == ARCH_INST_COUNT); + + switch (inst) { +#define ARCH_SPEC_INST(label, symbol, core) case label: return #label; + ARCH_SPEC_INST_SET(core) +#undef ARCH_SPEC_INST + } + + assert(false); + return NULL; +} -- cgit v1.2.1