Files
SecurityEmulator/src/ExecutorCases.h

39 lines
664 B
C
Raw Normal View History

2026-02-04 12:52:42 +01:00
#pragma once
#include <cstdint>
#include <memory>
#include <array>
struct Instruction;
class Bus;
struct CPUContext {
Instruction& m_Instruction;
uint64_t& m_InstructionPointer;
uint64_t& m_Flags;
uint64_t* m_Registers;
std::shared_ptr<Bus> m_Bus;
CPUContext(Instruction& i, uint64_t& ip, uint64_t& flags, uint64_t* reg, std::shared_ptr<Bus>& bus);
~CPUContext();
};
enum class ModRMState : uint8_t
{
INVALID = 0,
LR = 1,
LR_DISP8 = 2,
LR_DISP32 = 3,
R = 4
};
struct ModRM{
ModRMState m_State;
uint8_t m_Reg;
uint8_t m_Rm;
};
typedef void (*ExecutorCase)(CPUContext&);
const std::array<ExecutorCase, 255>& GetExecutorTable();