Initial Commit
This commit is contained in:
38
src/ExecutorCases.h
Normal file
38
src/ExecutorCases.h
Normal file
@@ -0,0 +1,38 @@
|
||||
#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();
|
||||
Reference in New Issue
Block a user