Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site well.UUCP Path: utzoo!watmath!clyde!bonnie!akgua!gatech!seismo!lll-crg!well!farren From: farren@well.UUCP (Mike Farren) Newsgroups: net.micro,net.arch Subject: Re: Re: 386 Family Products (8086 sucks Message-ID: <351@well.UUCP> Date: Tue, 17-Dec-85 06:19:16 EST Article-I.D.: well.351 Posted: Tue Dec 17 06:19:16 1985 Date-Received: Fri, 20-Dec-85 00:44:09 EST References: <133@daisy.UUCP> <97800013@ima.UUCP> <464@looking.UUCP> <154@ism780c.UUCP> Organization: Whole Earth Lectronic Link, Sausalito, CA Lines: 29 Xref: watmath net.micro:13149 net.arch:2321 In article <154@ism780c.UUCP>, tim@ism780c.UUCP (Tim Smith) writes: > It could have been done with no work from the compiler if Intel had > put the bits in a reasonable place. A full pointer has a selector and > an offset. Here is what they look like: > > Selector: > -------------------------------------------------------- > | Segment Number ( 13 bits ) | Other Stuff ( 3 bits ) | > -------------------------------------------------------- > > Offset: > -------------------------------------------------------- > | Offset in Segment ( 16 bits ) | > -------------------------------------------------------- > Huh? Wha? Am I awake yet? That is NOT the way the segments work; the "Other Stuff" is not a pointer into any kind of table, in fact, it doesn't exist at all. A full pointer on the 8086 is two words. The first word is nothing more than a pointer to a 16-byte boundary which is the beginning of the 64K segment. The second word is the offset within the segment, and is simply added to the (left-shifted 4 bits) first word to obtain a 20-bit real address. -- Mike Farren uucp: {dual, hplabs}!well!farren Fido: Sci-Fido, Fidonode 125/84, (415)655-0667 USnail: 390 Alcatraz Ave., Oakland, CA 94618