#pragma once #include "stdafx.h" #include #include "CPU.h" class LabelManager; class DisassemblyInfo { public: static string OPName[256]; static AddrMode OPMode[256]; static uint32_t OPSize[256]; private: string _byteCode; uint8_t *_opPointer = nullptr; bool _isSubEntryPoint = false; bool _isSubExitPoint = false; uint32_t _opSize = 0; AddrMode _opMode; public: DisassemblyInfo(uint8_t* opPointer, bool isSubEntryPoint); void SetSubEntryPoint(); int32_t GetEffectiveAddress(State& cpuState, shared_ptr memoryManager); string GetEffectiveAddressString(State& cpuState, shared_ptr memoryManager, shared_ptr labelManager); string ToString(uint32_t memoryAddr, shared_ptr memoryManager, shared_ptr labelManager); string GetByteCode(); uint32_t GetSize(); uint16_t GetOpAddr(uint16_t memoryAddr); bool IsSubEntryPoint(); bool IsSubExitPoint(); };