Re: [hatari-devel] Hatari profiler updates and CPU cycle questions

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


Here is a snapshot of output from the profiler (with the patch applied to prevent the crash). 

The 'count' column looks sensible but the cycles column looks pretty random, with negative or overflow values in there. The test I profiled only ran for a few seconds so I doubt the total cycle count could be responsible. There are also zeroes all over the place.


$01ee32 : 9242                                 sub.w     d2,d1                      0.00% (34, 4294967295, 34)
$01ee34 : e249                                 lsr.w     #1,d1                      0.00% (34, 0, 34)
$01ee36 : 48c1                                 ext.l     d1                         0.00% (34, 0, 0)
$01ee38 : d281                                 add.l     d1,d1                      0.00% (34, 0, 34)
$01ee3a : d081                                 add.l     d1,d0                      0.00% (34, 0, 0)
$01ee3c : 4a39 000b cad2                       tst.b     $bcad2                     0.00% (34, 68, 34)
$01ee42 : 6622                                 bne.s     $1ee66                     0.00% (34, 0, 0)
[...]
$01ee66 : 23c0 000b caae                       move.l    d0,$bcaae                  0.00% (34, 68, 34)
$01ee6c : 4e75                                 rts                                  0.00% (34, 0, 34)
[...]
$01eeea : 48e7 f0f0                            movem.l   d0-d3/a0-a3,-(sp)          0.00% (20, 4294967295, 0)
$01eeee : 2479 000b cad8                       movea.l   $bcad8,a2                  0.00% (20, 4294967295, 0)
$01eef4 : 4e92                                 jsr       (a2)                       0.00% (20, 0, 20)
$01eef6 : 1038 fc00                            move.b    $fffffc00.w,d0             0.00% (20, 58, 60)
$01eefa : 0800 0007                            btst      #7,d0                      0.00% (20, 4294967295, 0)
$01eefe : 676a                                 beq.s     $1ef6a                     0.00% (20, 0, 0)
$01ef00 : 0800 0004                            btst      #4,d0                      0.00% (20, 0, 20)
$01ef04 : 6670                                 bne.s     $1ef76                     0.00% (20, 0, 20)
$01ef06 : 0800 0005                            btst      #5,d0                      0.00% (20, 0, 0)
$01ef0a : 666a                                 bne.s     $1ef76                     0.00% (20, 0, 0)


I did play with the post processor python file and got some output but I think the results are invalid because the profiler output is wrong. One problem I did notice is that it collects statistics under symbols for functions which are inactive/unused. e.g.


Executed instructions:
 97.35%  18904938  add_upper_partition  (at 0x2210a)   <- this function is defined, but is never used by the test
  1.51%    293593  HATARI_PROFILE_BEGIN
  0.44%     85170  add_upper    (at 0x21dd6)
  0.37%     71598  add_lower    (at 0x21d28)
  0.33%     64828  Display_Player_Position      (at 0x24612)  <- this function is only called if the map is opened, which it was not

When I get a bit more time I'll check the symbols to make sure they were allocated to the right addresses, in case it was an import error on my part etc. I think the main problems though are the crash (?) and the cycle counts. The two problems may even be related? I'll try to test with an un-optimized build as well to see if anything different happens.

D.



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