diff options
| author | Raymaekers Luca <luca@spacehb.net> | 2025-08-23 16:22:13 +0200 |
|---|---|---|
| committer | Raymaekers Luca <luca@spacehb.net> | 2025-08-23 16:22:13 +0200 |
| commit | ea20bd9b5bcff9db1d86d83188e1e899799f324b (patch) | |
| tree | 615e2f00e385e93061524c9647b64010ba7df3dd /src/code/reference_decoder/sim86_text_table.cpp | |
checkpoint
Diffstat (limited to 'src/code/reference_decoder/sim86_text_table.cpp')
| -rw-r--r-- | src/code/reference_decoder/sim86_text_table.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/code/reference_decoder/sim86_text_table.cpp b/src/code/reference_decoder/sim86_text_table.cpp new file mode 100644 index 0000000..e90a649 --- /dev/null +++ b/src/code/reference_decoder/sim86_text_table.cpp @@ -0,0 +1,57 @@ +/* ======================================================================== + + (C) Copyright 2023 by Molly Rocket, Inc., All Rights Reserved. + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Please see https://computerenhance.com for more information + + ======================================================================== */ + +char const *OpcodeMnemonics[] = +{ + "", + +#define INST(Mnemonic, ...) #Mnemonic, +#define INSTALT(...) +#include "sim86_instruction_table.inl" +}; + +static char const *GetMnemonic(operation_type Op) +{ + char const *Result = ""; + if(Op < Op_Count) + { + Result = OpcodeMnemonics[Op]; + } + + return Result; +} + +static char const *GetRegName(register_access Reg) +{ + char const *Names[][3] = + { + {"", "", ""}, + {"al", "ah", "ax"}, + {"bl", "bh", "bx"}, + {"cl", "ch", "cx"}, + {"dl", "dh", "dx"}, + {"sp", "sp", "sp"}, + {"bp", "bp", "bp"}, + {"si", "si", "si"}, + {"di", "di", "di"}, + {"es", "es", "es"}, + {"cs", "cs", "cs"}, + {"ss", "ss", "ss"}, + {"ds", "ds", "ds"}, + {"ip", "ip", "ip"}, + {"flags", "flags", "flags"}, + {"", "", ""} + }; + + char const *Result = Names[Reg.Index % ArrayCount(Names)][(Reg.Count == 2) ? 2 : Reg.Offset&1]; + return Result; +} |
