🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #1474

Re: Speicherprobleme mit Borland C

#1474
From: ana163 AnalysisI
Date: Wed, 31 Jan 1996 12:50
36 lines
2633 bytes
Hallo ILT-Benutzer, (???)

Dein Problem ist nicht der 386-Code. Das bedeutet nur, dass dein Prozessor mit
32 Bit langen Registern und ein paar erweiterten Befehlen umgehen kann. Unter
normalem DOS laeuft dein Programm im Real-Mode (bzw. Virtual-Mode) des
Prozessors. Das bedeutet, dass Du ein segmentiertes Speichermodell hast, wobei
Du nur jeweils auf ein Segment mit 64 KBytes Zugriff hast. Zusammen mit der 20
Bit breiten Adressierung beschraenkt das Deinen Adressraum auf 1 MB (8086
laesst gruessen).
Jedoch kann dein Prozessor im Protected Mode die Segmentgroessen auf 4 Gbyte
(ab i386) ausdehnen. Das bedeutet fuer Dich, dass du die Segmentregister
vergessen kannst und damit ein lineares 32-Bit Speichermodell hast (wie bei
vernuenftigen Prozessoren). Leider mag das DOS den Protected-Mode gar nicht.
Es gibt jedoch zwei Loesungen: Ab dem i386 gibt es einen Fehler (zum Glueck!)
im Prozessor. Du kannst kurz in den Protected-Mode schalten, ein oder zwei
selten gebrauchte Segmentregister auf 4 GByte aufblasen und wieder in den
Real-Mode zurueckschalten. Durch den Fehler werden die Segmentregister-Caches
nicht wieder 
neu initialisiert und deine Segment sind auch im Real-Mode 4 GBytes gross.
Leider geht dieser Trick nicht, wenn Du einen Speichermanager wie z.B. EMM386
benutzt, da dieser den Prozessor im Virtuellen 8086 Modus lauffen laesst.

Aber es gibt eine andere Moeglichkeit. Benutze einen C++ Compiler, der
DOS-Extender unterstutzt (z.b. GNU C++ oder Watcom C++). Dort kannst Du einfach
drauflosprogrammieren und musst Dich nicht mit solchen Sachen wie
Segmentgerenzen und anderen DOS-Anachronismen herumschlagen. Integer und Zeiger
werden 32 Bit breit. Der gesammte Speicherbereich von 32 MBytes steht Dir
offen. Du kannst damit auch DOS Funktionen aufrufen und der Extender regelt den
ganzen Kleinkram fuer Dich.

Also kauf Dir einen vernuenftigen C++ Compiler und wechsel am besten auf ein
richtiges Betriebssystem wie z.B. OS/2.

In diesem Sinne...

Joern Ihlenburg
Technical Details
Message-ID: <4enoia$pnq@newsserv.zdv.uni-tuebingen.de>
Path: arc1-ca.pugleaf.net!newsserv.zdv.uni-tuebingen.de!news
References: <4elko4$e65@news.rwth-aachen.de>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!newsserv.zdv.uni-tuebingen.de!news
From: ana163 Analysis~I <ana163>
Newsgroups: de.comp.lang.c++
Subject: Re: Speicherprobleme mit Borland C
Date: 31 Jan 1996 12:50:18 GMT
Organization: InterNetNews at ZDV Uni-Tuebingen
Message-ID: <4enoia$pnq@newsserv.zdv.uni-tuebingen.de>
References: <4elko4$e65@news.rwth-aachen.de>
NNTP-Posting-Host: donau.mathematik.uni-tuebingen.de
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mailer: Mozilla 1.1N (X11; I; HP-UX A.09.05 9000/712)
To: user@ilt.fhg.de
X-URL: news:4elko4$e65@news.rwth-aachen.de