Author: Eugene Nalimov
Date: 21:22:09 03/10/00
Go up one level in this thread
On March 10, 2000 at 22:01:18, Christophe Theron wrote: >On March 10, 2000 at 02:54:42, Eugene Nalimov wrote: > >>On March 10, 2000 at 02:39:39, Eugene Nalimov wrote: >> >>>On March 10, 2000 at 02:00:32, Christophe Theron wrote: >>> >>>>On March 09, 2000 at 19:23:01, John Coffey wrote: >>>> >>>>> >>>>>>So by your definition, a PC with SDRAM is 64-bit, whereas a new Pentium III with >>>>>>Rambus memory is 16-bit. Or maybe 256-bit, due to the interface to the L2 cache? >>>>>>Gets confusing quickly... >>>>>> >>>>> >>>>> >>>>>I am not going to make any claims to modern processors that I don't program. >>>>>The 68000 fetched data and instructions from memory 16 bits at a time. I don't >>>>>see anything wrong with my definition. >>>>> >>>>>John >>>> >>>> >>>>I have heard that some 64Kb limitations (for code or data) apply to the 68000. I >>>>don't understand why, as it has 32 bits registers. The 16 bits address bus is >>>>very similar to the 386sx 16 address bus (the 386sx had 32 bits registers). >>>> >>>>What's the problem with the 68000? Are there really such limitations? >>>> >>>> >>>> Christophe >>> >>>First 32k of address space (and of course last 32k) can directly addressed used >>>2 bytes address included in the instruction, not 4 bytes address, so typical >>>instruction occupies 4 bytes instead of 6. So if you'll manage to allocate all >>>your globals there, your program would be noticeable shorter. Important >>>consideration for the systems with limited ROM/RAM. >>> >>>Eugene >> >>Addition: 68000 has address mode "reg32+offset16", but does not have >>"reg32+offset32". So, to index the array that is located in first/last 32k, you >>can use address mode directly, i.e. >> mov.l 0x1234(a5), d0 >>(1 instruction, 4 bytes) >> >>If array is located out of this space, you have to use something like >> mov.l a5, a3 >> add.l #0x12345678, a3 >> mov.l (a3), d0 >>(3 instructions, 10 bytes, one extra register used) >> >>Eugene > > >OK! I understand better now what the problem is. Adressing an array bigger than >64K is not elegant. Reminds me a lot about these horrible segmented addressing >system of the x86 family and the near/far pointers. > >Does the same problem apply to code addressing (jumps or calls limited to 16 >bits offsets from current IP or something similar)? > >Thanks for the info. > > > Christophe Sorry, it looks that my explanation was not good: array size is not relevant. What is important is that *address* of the first array element was in first 32k of address space. And of course not any OS allows it - but for standalone video games you can arrange it. With branches/jumps everything is more or less Ok; PC-relative offset for conditional branches is 1 byte (-126..+128 bytes), but unconditional jumps are "far". Eugene
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.