1#ifndef YAZE_CLI_SERVICE_AGENT_DISASSEMBLER_65816_H_
2#define YAZE_CLI_SERVICE_AGENT_DISASSEMBLER_65816_H_
7#include <unordered_map>
9#include "absl/strings/str_format.h"
66 std::string& mnemonic,
67 std::string& operand_str,
68 std::vector<uint8_t>& operands);
75 return absl::StrFormat(
"$%02X:%04X", (address >> 16) & 0xFF, address & 0xFFFF);
81 const std::vector<uint8_t>& operands)
const;
126 uint32_t end_addr)
const;
void SetFlags(bool m_flag, bool x_flag)
uint8_t DisassembleInstruction(uint32_t address, const uint8_t *data, std::string &mnemonic, std::string &operand_str, std::vector< uint8_t > &operands)
std::unordered_map< uint8_t, InstructionInfo > opcode_table_
uint8_t GetInstructionSize(uint8_t opcode) const
static std::string FormatAddress(uint32_t address)
std::string FormatOperand(AddressingMode mode, uint32_t address, const std::vector< uint8_t > &operands) const
uint8_t GetEffectiveSize(uint8_t opcode, AddressingMode mode) const
void InitializeOpcodeTable()
void RecordExecution(const TraceEntry &entry)
std::vector< TraceEntry > GetRecentEntries(size_t count) const
std::vector< TraceEntry > buffer_
ExecutionTraceBuffer(size_t max_size=kDefaultBufferSize)
static constexpr size_t kDefaultBufferSize
std::vector< TraceEntry > GetEntriesInRange(uint32_t start_addr, uint32_t end_addr) const
std::vector< uint8_t > operands