mirror of
https://github.com/MoleskiCoder/EightBit.git
synced 2024-12-21 18:29:57 +00:00
Incorporate disassembly into address profile output.
Signed-off-by: Adrian.Conlon <adrian.conlon@arup.com>
This commit is contained in:
parent
c7e65f5447
commit
67fa2a7afe
@ -4,9 +4,13 @@
|
||||
#include <cstdint>
|
||||
|
||||
namespace EightBit {
|
||||
|
||||
class Disassembler;
|
||||
class Z80;
|
||||
|
||||
class Profiler {
|
||||
public:
|
||||
Profiler();
|
||||
Profiler(Z80& cpu, Disassembler& disassembler);
|
||||
~Profiler();
|
||||
|
||||
void addInstruction(uint8_t instruction);
|
||||
@ -17,6 +21,8 @@ namespace EightBit {
|
||||
private:
|
||||
std::array<uint64_t, 0x100> m_instructions;
|
||||
std::array<uint64_t, 0x10000> m_addresses;
|
||||
Disassembler& m_disassembler;
|
||||
Z80& m_cpu;
|
||||
|
||||
void dumpInstructionProfiles() const;
|
||||
void dumpAddressProfiles() const;
|
||||
|
@ -1,8 +1,11 @@
|
||||
#include "stdafx.h"
|
||||
#include "Profiler.h"
|
||||
#include "Disassembler.h"
|
||||
#include "Z80.h"
|
||||
|
||||
EightBit::Profiler::Profiler() {
|
||||
EightBit::Profiler::Profiler(Z80& cpu, Disassembler& disassembler)
|
||||
: m_cpu(cpu),
|
||||
m_disassembler(disassembler) {
|
||||
std::fill(m_instructions.begin(), m_instructions.end(), 0);
|
||||
std::fill(m_addresses.begin(), m_addresses.end(), 0);
|
||||
}
|
||||
@ -36,7 +39,16 @@ void EightBit::Profiler::dumpAddressProfiles() const {
|
||||
std::cout << "** addresses" << std::endl;
|
||||
for (int i = 0; i < 0x10000; ++i) {
|
||||
auto count = m_addresses[i];
|
||||
|
||||
m_cpu.PC().word = i;
|
||||
|
||||
if (count > 0)
|
||||
std::cout << Disassembler::hex((uint16_t)i) << "\t" << count << std::endl;
|
||||
std::cout
|
||||
<< Disassembler::hex((uint16_t)i)
|
||||
<< "\t"
|
||||
<< count
|
||||
<< "\t"
|
||||
<< m_disassembler.disassemble(m_cpu)
|
||||
<< std::endl;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user