Andrew Collier
Sun, 22 Jun 2008 08:51:30 -0700
On 22 Jun 2008, at 15:37, Thomas Harte wrote:
ex de, hl add hl, hl add hl, hl ex de, hlTakes 48 cycles (on the 6 Mhz bus) if executed in its entirety while pixels are being drawn, 32 cycles if executed in its entirety while pixels are not being drawn. The functionally equivalent:sla e rl d sla e rl dTakes 64 cycles if executed in its entirety while pixels are being drawn, 32 cycles if executed in its entirety while pixels are not being drawn?
Yes. I believe these and all your other statements are correct.
Has anyone drawn up a neat table of all the opcodes with cycle counts computed as weighted probabilities of their timings if executed entirely in pixels and if executed entirely outside?
David Zambonini wrote up a description of Sam timings for an article in "Based on an idea" issue 2 (and I may be able to find a text file he sent me with an earlier version of that article). He expresses the timings differently, but the data is basically the same; there are a few instructions which take less time to execute than they "should" when the screen is on (working out the statistical benefit of that is just a little bit of maths). It's a good idea to put these into every algorithm you can get them...
Andrew -- --- Andrew Collier ---- ---- http://www.intensity.org.uk/ --- --