/* ======================================================================== (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; }