www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/01/29/11:30:19

Message-ID: <001101be4ba4$90094940$90f9c6c3@johans-dator>
From: "Johan Henriksson" <johan DOT he AT telia DOT com>
To: <djgpp AT delorie DOT com>
Subject: Re: paradox!
Date: Fri, 29 Jan 1999 17:29:35 +0100
MIME-Version: 1.0
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 4.72.3110.1
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
Reply-To: djgpp AT delorie DOT com

from Johan Henriksson, Sweden    HTTP://come.to/jhewok  |
Primary mail: johan DOT he AT telia DOT com                  #UIN 12035895
Second: jhe75 AT hotmail DOT com    Third: johan_he AT yahoo DOT com
Leadprogrammer and FX-specialist at Real software
http://come.to/real_software
*************************************************************************
-----Original Message-----
From: DJ Delorie <dj AT delorie DOT com>
To: djgpp AT delorie DOT com <djgpp AT delorie DOT com>
Date: Friday, January 29, 1999 4:22 PM
Subject: Re: paradox!


>
>> 1) what is _djgpp_conventional_base?
>
>This is the amount you have to add to pointers to make them point to
>physical addresses instead of logical addresses, when using nearptr.h.
>For example, to point to the VGA memory you'd use this:
>
> (char *)(0xa0000+_djgpp_conventional_base)
>
>> the 386 has some models of operation. of which i am only interested in
>> two, the segmented model, and the flat model. I have understood that the
>> flat model is the same as the segmented but with all segments set to the
>> same values (i.e. they all point to the same descriptor). they all begin
>> at 0 and span 4gb, right?
>
>No.  The 386 has three modes of operation: real, protected, and V86.

Hey! Haven't heard of V86! Where can I read more about it?

>We're only interested in protected.  Protected mode programs, like
>*all* 386 programs, are always segmented.  "flat model" only means
>that CS=DS=ES=SS and that, for the most part, programs may simply
>ignore the fact of segments.
>
>Flat mode does not mean that the base address is zero and that the
>segments are 4Gb large.  In fact, with DJGPP's flat model, neither of
>these are true.  Using nearptr.h makes the segments 4G each, but does
>not make them start at physical address 0.
>
>> a) is there any kind of protection when using the flat mode? how comes?
>
>Yes.  You are still running in protected mode.
>
>> all the memory is available and i can write to anywhere without causing
>> an exception!
>
>Wrong!
>
>> b) I assume djgpp runs in flat model! right?
>
>Yes.  However, your definition of "flat model" is incorrect.  Think of
>Borland's "tiny model" instead, but with 32 bits of space instead of
>16.
>
>> >Programs compiled with DJGPP can access all the physical memory on your
>> >machine
>
>That doesn't mean you can scribble all over existing programs or the
>OS.  They will let you use all available physical memory, but they
>will protect themselves against corruption.
>
>> great... now all the memory is available! why do i get a SIGSEGV fault
>> when i executed a very simple CLS function?
>> mov edi,0xa0000
>> mov ecx,16000
>> mov eax,0
>> rep stosd
>
>Because you are asking to write to memory that you haven't correctly
>referenced.  You made a mistake, and the OS will stop you rather than
>let you crash the system.
>
>Since DJGPP segments don't start at physical address 0, you can't just
>make up linear addresses like that and expect them to point to
>physical devices.
>
>> 3) where can i find info about pages, page table... etc... i have read
>> intel reference, but i couldn't understand any thing!! :-(
>
>The Intel "system programmer's guide" is the best reference I know for
>all that, but it is a complicated thing to learn.  Fortunately, unless
>you're writing an operating system, you won't need to know anything
>about it.
>

- Raw text -


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