From: "Alexei A. Frounze" Newsgroups: comp.os.msdos.djgpp Subject: Fwd: Re: Help with Inline ASM... Date: Sun, 16 Apr 2000 13:28:56 +0400 Organization: MTU-Intel ISP Lines: 65 Message-ID: <38F987D8.74145BAE@mtu-net.ru> NNTP-Posting-Host: ppp97-187.dialup.mtu-net.ru Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Transfer-Encoding: 7bit X-Trace: gavrilo.mtu.ru 955887115 21507 212.188.97.187 (16 Apr 2000 12:11:55 GMT) X-Complaints-To: usenet-abuse AT mtu DOT ru NNTP-Posting-Date: 16 Apr 2000 12:11:55 GMT X-Mailer: Mozilla 4.72 [en] (Win95; I) X-Accept-Language: en,ru To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Eli Zaretskii wrote: > > On Fri, 14 Apr 2000, Alexei A. Frounze wrote: > > > Please read all the following text until its end. Then reply. > > I thought I always did that, no need to remind me. I tell this because it seems to me that people start replying immediately. I.e. they read a section and reply, read another section and reply and so on. This very often means they *loose general idea behind* all my message. They simply skip it. > > > You're right, we can not modify segment marked as executable/read. But since > > data segment is mapped on the code segment as well, you may modify it just > > uding the DS selector. > > Yes, this is done on purpose, so that interrupt and exception handlers > could access crucial variables safely (since only CS is known to be > valid in an interrupt or exception handler). The DJGPP library actually > uses this to provide several important features, like signals and FP > emulation. > We seem to use two very different definitions of what ``flat memory > model'' is. > > According to my definition, the flat model is when any linear address > can be accessed without reloading the segment registers. DJGPP > doesn't allow this (for example, you need _dos_ds to access the > conventional memory), so its memory model is not flat. :))) Not really. GCC was not developed for *DOS* and *DPMI*. It's just a free 32-bit GNU C/C++ compiler for i386+. And it may be compiled for Windows as well as for DOS/DPMI. Btw, it's available for Linux... Originally it doesn't support any segment reloads at all. Just 32-bit offsets. Doesn't this mean that DJGPP/GCC works in a flat memory model??? Yes it means, because support for real mode DOS with all those segments/selectors is a specific case and nothing else. Yes, it's specific, although most of people use this specific thingy. It's specific for compiler itself but not for users. :) > This all was discussed to death in a thread that I mentioned in my > message. I suggest to find it in the DJGPP archives and read it. I have no need. *Original* post was about *modifying code segment*. And I tried to tell that it's possible by refering to code segment part with segment register override. I.e. using "mov [ds:xxx]" instead of "mov [cs:xxx]" where xxx is a label in the code segment. > Page-level protection is not supported by most DPMI servers, so DJGPP > cannot use it. > > But that has nothing to do with flat memory model. This again means that modifying the code segment is possible. bye. Alexei A. Frounze ----------------------------------------- Homepage: http://alexfru.chat.ru Mirror: http://members.xoom.com/alexfru