1#ifndef YAZE_APP_EMU_DEBUG_DISASSEMBLER_H_
2#define YAZE_APP_EMU_DEBUG_DISASSEMBLER_H_
7#include <unordered_map>
10#include "absl/strings/str_format.h"
119 bool x_flag =
true)
const;
131 uint32_t start_address,
135 bool x_flag =
true)
const;
160 const std::vector<uint8_t>& operands,
167 const std::vector<uint8_t>& operands,
169 uint8_t instruction_size)
const;
65816 CPU disassembler for debugging and ROM hacking
std::function< std::string(uint32_t)> SymbolResolver
void InitializeOpcodeTable()
DisassembledInstruction Disassemble(uint32_t address, MemoryReader read_byte, bool m_flag=true, bool x_flag=true) const
Disassemble a single instruction.
uint8_t GetInstructionSize(uint8_t opcode, bool m_flag, bool x_flag) const
Calculate actual instruction size based on flags.
const InstructionInfo & GetInstructionInfo(uint8_t opcode) const
Get instruction info for an opcode.
InstructionInfo opcode_table_[256]
std::vector< DisassembledInstruction > DisassembleRange(uint32_t start_address, size_t count, MemoryReader read_byte, bool m_flag=true, bool x_flag=true) const
Disassemble multiple instructions.
std::function< uint8_t(uint32_t)> MemoryReader
uint32_t CalculateBranchTarget(uint32_t address, const std::vector< uint8_t > &operands, AddressingMode65816 mode, uint8_t instruction_size) const
std::string FormatOperand(AddressingMode65816 mode, const std::vector< uint8_t > &operands, uint32_t address, bool m_flag, bool x_flag) const
SymbolResolver symbol_resolver_
void SetSymbolResolver(SymbolResolver resolver)
Set optional symbol resolver for address lookups.
AddressingMode65816
Addressing modes for the 65816 CPU.
@ kDirectPageIndirectIndexedY
@ kStackRelativeIndirectIndexedY
@ kProgramCounterRelative
@ kDirectPageIndirectLong
@ kDirectPageIndexedIndirectX
@ kDirectPageIndirectLongIndexedY
@ kProgramCounterRelativeLong
@ kAbsoluteIndexedIndirect
Result of disassembling a single instruction.
std::vector< uint8_t > operands
DisassembledInstruction()
Information about a single 65816 instruction.
InstructionInfo(const std::string &m, AddressingMode65816 am, uint8_t size)