Annotation of hatari/src/uae-cpu/add_cycles.pl, revision 1.1.1.1

1.1       root        1: #!/usr/bin/perl -w
                      2: #
                      3: # Simple script used to parse cpuemu.c and to generate
                      4: # a new cpuemu.c where each opcode sets CurrentInstrCycles
                      5: # to the value that would be returned at the end of this
                      6: # opcode's processing.
                      7: #
                      8: # This allows to know how many cycles an instructions will take
                      9: # while handling its memory accesses (this is needed for
                     10: # accurate border removal emulation).
                     11: #
                     12: # This script is not perfect (doesn't give correct cycles
                     13: # values for variable cycles intr. like rol, lsl, movem, ...)
                     14: # but it is enough for border removal as instruction are
                     15: # often move or clr with fixed cycles count.
                     16: #
                     17: # 2007/03/07   [NP]    OK
                     18: 
                     19: 
                     20: 
                     21: $in_func = 0;
                     22: 
                     23: while ( <> )
                     24:   {
                     25:     $line = $_;
                     26: 
                     27:     # not in a function, we print back to stdout
                     28:     if ( $in_func == 0 )
                     29:       {
                     30:         print $line;
                     31:         $in_func = 1 if $line =~ /^{/;
                     32:       }
                     33: 
                     34:     # we're entering in a function ; we buffer everything
                     35:     # until we reach the 'return' line, then we print
                     36:     # the CurrentInstrCycles based on the numeric value in
                     37:     # the 'return' line, finally we print the buffered lines.
                     38:     else
                     39:       {
                     40:        push @buf , $line;              # create a buffer for the function's body
                     41: 
                     42:        if ( $line =~ /return \(?(\d+)/ )
                     43:          {
                     44:            print "CurrentInstrCycles = $1;\n";
                     45:            print @buf;
                     46:            @buf = ();
                     47:            $in_func = 0;
                     48:          }
                     49:       }
                     50:   }
                     51: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.