diff options
Diffstat (limited to 'eater_cpu/cpp/disas.h')
| -rw-r--r-- | eater_cpu/cpp/disas.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/eater_cpu/cpp/disas.h b/eater_cpu/cpp/disas.h new file mode 100644 index 0000000..9685e15 --- /dev/null +++ b/eater_cpu/cpp/disas.h @@ -0,0 +1,30 @@ +#pragma once + +#include <cstdint> +#include <format> +#include <string> + +static std::string disas(uint8_t ins) { + switch (ins >> 4) { + case 0: + return "nop"; + case 1: + return std::format("lda {}", ins & 0x0f); + case 2: + return std::format("add {}", ins & 0x0f); + case 3: + return std::format("sub {}", ins & 0x0f); + case 4: + return std::format("sta {}", ins & 0x0f); + case 5: + return std::format("ldi {}", ins & 0x0f); + case 6: + return std::format("jmp"); + case 14: + return std::format("out"); + case 15: + return std::format("halt"); + default: + return "???"; + } +} |
