Re: [hatari-devel] Getting cycles used by previous or next instruction without modifying CPU state?

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


On 22/02/2012 20:39, Eero Tamminen wrote:
Hi,

On tiistai 21 helmikuu 2012, Nicolas Pomarède wrote:
On 20/02/2012 23:50, Eero Tamminen wrote:
How do I get how many cycles previous instruction used, for
profiling purposes?

src/debug/profile.c has this code:
          Uint32 opcode, cycles;
          opcode = get_iword_prefetch (0);
          cycles = (*cpufunctbl[opcode])(opcode) + nWaitStateCycles;

But that's bad, calling the opcode table function modifies
the CPU state.

I don't think you can get this easily. Only the current instruction
cycles are available.

 From where?


Well, it's almost everywhere in the traces I added in various parts :) -> CurrentInstrCycles


If that's just for test purpose, you can add some kind of breakpoint
that would trigger on every instruction and then save the current cycles
in your own variable. But this would certainly slow down emulation a lot.

This is for the profiler.  If it cannot get the cycles either for previous
or next instruction without modifying/invalidating CPU state, it's better
if I remove that part.

Then I guess it won't be possible. Calling opcode() will really run the instruction (and change cpu/memory), and some instructions have variable number of cycles depending on their parameters (lsl, rol, mul, div, ...)


Nicolas



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/