"Jim Leonard" <MobyGamer@[EMAIL PROTECTED]
> wrote in message
news:a54126c4-0a66-4105-8a85-a4711bf74965@[EMAIL PROTECTED]
> On Feb 11, 6:04 am, "Jason Burgon" <jayn...@[EMAIL PROTECTED]
> wrote:
> > An 8088 takes much more than 4 cycles to load a register on average. A
> > 6809 takes between 2 and 8, but they are *real* numbers, not the
pie-in-
> > the-sky numbers Intel used in their docs.
>
> I (or Intel) never claimed that loading a register took 4 cycles; I
> said that reading a byte (any byte) takes 4 cycles.
Yes, my mistake. The 6809 takes 1 cycle for an 8-bit data fetch or store,
2
cycles for a 16-bit one.
> MOV ac***,mem (10 cycles, 3 bytes)
>
> ...takes more than 10 cycles if it's not prefetched, it takes 10 +
> (3*4)= 22 cycles.
Yes - absolutely horrendous! ;-)
> > A 6809 also has 16-bit registers, and an 8
> > * 8 MUL. A call ([L]BSR) takes 7 or 9 cycles, and a ret (RTS) takes 5.
>
> Well, I've got a 16*16 MUL and a 32/16 DIV, so there ;-P
:-)
> Throw me a bone here -- is there anything 8088 can do better (other
> than DIV) than 6809? I'm asking seriously.
How long does each loop of a rep stos[b|w] take on an 8088? The 6809
doesn't
have any "machine gun" instructions (corrected a little later by Hitachi's
6309), so it might be quicker at memory <-> memory copies.
> Everything is in one program for now (I usually split stuff into units
> as soon as the source gets unwieldy) so it's definitely in scope. I
> think that, to get around it, instead of this:
>
> TPlayer = object
> notesHz[0..maxNotes*IBN] of word;
>
> ...I may have to do this:
>
> type
> noteIntervals=array[0..maxNotes*IBN] of word;
> TPlayer = object
> notesHz:noteIntervals;
>
> That way the array type is defined outside of the object and the
> compiler shouldn't complain.
That's not such a bad idea anyway. I personally dislike the defining of
one
type inside the definition of another.
--
Jay
Jason Burgon - author of Graphic Vision
http://homepage.ntlworld.com/gvision


|