www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/02/09/15:46:22

From: Shawn Hargreaves <Shawn AT talula DOT demon DOT co DOT uk>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: HELP! What's the differnce between Far and near pointers?
Date: Mon, 9 Feb 1998 19:13:19 +0000
Organization: None
Distribution: world
Message-ID: <HQpCwJAPV130Ewgp@talula.demon.co.uk>
References: <6bnh8o$pc3$1 AT madrid DOT visi DOT net>
NNTP-Posting-Host: talula.demon.co.uk
MIME-Version: 1.0
Lines: 25
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

Kris Mills writes:
>What is the differnce between far and near pointers? I thought that this was 
>protected mode were the memory was in Flat Mode so all the memory was in one 
>linear chunk. could so one please explain that to me.. Thanks 

In a real mode program, a far pointer is a 32 bit value made up from a
16 bit segment and 16 bit offset, which lets you access any memory in
the first megabyte. A real mode near pointer is just a 16 bit offset,
which can only access locations within a 64k chunk.

In protected mode, a near pointer is 32 bits so it can directly access
up to 4GB of memory. For a djgpp program this includes all your code,
all your variables, and anything that you allocate with library
functions like malloc(), ie. all the memory that you will normally need
to use. But in some special situations you may want to access specific
locations like a conventional memory buffer for communicating with DOS,
or the video memory in your graphics card, and those aren't part of your
linear address space. The solution is to use a protected mode far
pointer, which is a 48 bit value consisting of a 16 bit selector and 32
bit offset, and can be implemented with the functions in <sys/farptr.h>.


--
Shawn Hargreaves - shawn AT talula DOT demon DOT co DOT uk - http://www.talula.demon.co.uk/
"Pigs use it for a tambourine" - Frank Zappa

- Raw text -


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