home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   alt.os.development      Operating system development chatter      4,255 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 2,555 of 4,255   
   mutazilah@gmail.com to wolfgang kern   
   Re: PDOS/86   
   12 Jul 21 21:13:32   
   
   From: muta...@gmail.com   
      
   On Tuesday, July 13, 2021 at 1:31:29 PM UTC+10, wolfgang kern wrote:   
      
   > >> 24-bit addressing, and a theoretical x86 processor with   
   > >> 32-bit addressing. Come to think of it, it might be possible   
   > >> to use an actual 80386 to do effective 16-bit segment   
   > >> shifts. Or surely I can at least match the 80286 and do   
   > >> (effective) 8-bit shifts. That would be a load of fun.   
   > >> I guess it depends how many selectors I can define on   
   > >> the 80386. I'll run everything in supervisor mode, so I   
   > >> can use both GDT and LDT if that helps.   
   > >   
   > > I looked up Wikipedia:   
   > >   
   > > https://en.wikipedia.org/wiki/Global_Descriptor_Table   
   > >   
   > > and there are 8192*2 selectors available, meaning that   
   > > 16-bit programs can access 1 GiB maximum.   
   >   
   > > 4-bit segment shifts make sense when there is 1 MiB of   
   > > memory available.   
      
   > you totally misunderstood how descriptors work.   
   > 1. GDT/LDT are only in effect in PM and VM   
   > 2. a GDT entry can span a 4GB memory range.   
   > 3. a descriptor can be set for either 16 or 32 bit limit.   
   > 4. there are several descriptor types [code/data/TSS].   
   > 5. the count of entries got nothing to do with accessible range.   
   > 6. segment descriptors ARE NOT extended RM-segment registers,   
   > they work complete different.   
      
   You misunderstand my intentions.   
      
   I will set up 16384 selectors, each pointing to consecutive   
   64k buffers. If the user has 1 GiB of memory, then we are   
   using EFFECTIVE 16-bit shifts. What that means is that   
   select 0 points to the first 64k. The second selector points   
   to address x'10000' for a length of 64k. The third selector   
   points to address x'20000' for a length of 64k.   
      
   So x'10000' * 16384 will eventually get us up to 1 GiB.   
      
   If we only had 512 MiB installed we would instead use   
   15 bit shifts to give better granularity.   
      
   So selector 0 points to address 0. Selector 1 points to   
   address x'8000' for a length of 64k. Selector 2 points to   
   address x'10000' for a length of 64k.   
      
   x'8000' * 16384 will eventually get us up to 512 MiB.   
      
   BFN. Paul.   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca