Subject: [stella] optimization From: "Andrew Davie" <adavie@xxxxxxxxxxxxxxxxx> Date: Wed, 13 May 1998 21:21:14 +1000 |
Here's a quickie... I always like a quickie.... When you need to multiply... think carefully about the binary organisation of either of the numbers, and how you can use powers of two to make your job qucker by incorporating shifts A shift to the left is the same as multiplying by two lda n asl ; a now holds 2n So, multiplying by powers of two is as simple as shifting multiple times.... this is pretty straightforward so far... lda n asl asl ; a holds 4n OK, easy stuff. But what if we want to multiply by 3. ... well, that's the same as multiplying by two and adding the original lda n asl adc n ; assuming n was < 127 originally, a holds 3n See how I left out the carry before the add, on the assumption that it would be cleared by the shift (asl) instruction before. Mostly, you have a fair idea of values you're working with, so can guarantee the validity of this. So, x3 turns out to be pretty easy. let's try x10 Welll... breaking it into blocks of multiplies by two (ie: shifts) is as simple as looking at the binary bit pattern... 10decimal is 1010binary. That shows us that we need to shift once, then shift twice, then add the two together. Here we go... lda n asl sta temp ; temp holds 2n asl asl ; a = 8n adc temp ; +2n = 10n OK, all assuming we won't have overflow - otherwise insert a carry before the add. But see how I've just done a x10 with just 15 cycles of processor time, and 9 bytes! Watch when you need to do multiplies just what values you're dealing with - you could save yourself a lot of cycles :) Always be prepared, though, to just whack in a huge table in ROM... ldx n lda times10,x ... times10 db 0,10,20,30,40.... etc That only took 7 cycles, mmmh :) I hope this stuff isn't too basic for the list, but hope some may be interested. If its too basic, let me know and I'll up a notch :) Enjoy! A -- Archives (includes files) at http://www.biglist.com/lists/stella/archives/ Unsub & more at http://www.biglist.com/lists/stella/stella.html
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [stella] Re: bitching about DAS, Eckhard Stolberg | Thread | Re: [stella] optimization, B. Deuel |
Re: [stella] playfield on-the-fly u, Andrew Davie | Date | Re: Re: [stella] playfield on-the-f, kurt.woloch |
Month |