www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/12/31/20:11:12

From: alaric AT abwillms DOT demon DOT co DOT uk (Alaric B. Williams)
Newsgroups: comp.os.msdos.djgpp
Subject: Re: DPMI incorporation...
Date: Wed, 01 Jan 1997 00:17:55 GMT
Lines: 62
Message-ID: <852077828.10907.0@abwillms.demon.co.uk>
References: <199612310023 DOT BAA23998 AT math DOT amu DOT edu DOT pl>
NNTP-Posting-Host: abwillms.demon.co.uk
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

"Mark Habersack" <grendel AT ananke DOT amu DOT edu DOT pl> wrote:

>1. in i386 Intel introduced a new level of indirection in memory 
>addressing - paging. Memory in i386 can be divided into units as 
>small as 4KB (PAGES) while in iAPX286 the smallest swappable (in 
>virtual memory sense) was a SEGMENT (64KB).

That's not quite getting the point, Mark. The 286 segments were
limited to a maximum size of 64Kb, but could be any size. The idea was
that you swapped things in and out at a high level; whole DLLs and
things like that lived in individual segments. The 386 flat address
space just arbitarily carves itself into 4k bits for management, they
don't mean anything structurally.

> While i386 retains all 
>the segmentation mechanisms of 286, it adds the new paging feature to 
>make virtual memory management easier (there's more to it, see below)
>Pages also enable complete separation of programs in memory - it is 
>possible to forbid one program changing or even looking into another 
>program's memory arena. Windows NT takes advantage of this feature.

That can be done with segments as well - there are global segments,
and local segments. A simple instruction (LIDT xxx) switches between
local segment groups for task switches, and can only be used by ring 0
code.

>3. Additional segment registers (fs, gs)

I've never figured out why :-)

Still, it's interesting that Intel have given names to registers that
are clearly alphabetically named, yet those names reflect their
instruction-set biases:

AX = accumulator; specialised arithmetic instructions
BX = base; array indexing instructions
CX = count; looping instructions
DX = data; IO instructions

...

CS = code segment
DS = data segment
ES = extra segment
FS = far data segment
GS = global data segment

What about AS and BS? :-)

ABW
--

"Simply drag your mother in law's cellphone number from the
Address Book to the Laser Satellite icon, and the Targeting
Wizard will locate her. Then follow the onscreen prompts for
gigawattage and dispersion pattern..."

(Windows for Early Warning and Defence User's manual P385)

Alaric B. Williams Internet : alaric AT abwillms DOT demon DOT co DOT uk
<A HREF="http://www.abwillms.demon.co.uk/">Hello :-)</A>

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019