🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: de.comp.lang.c++
5 messages
5 total messages Started by ILT-Benutzer Tue, 30 Jan 1996 17:32
Speicherprobleme mit Borland C
#1461
Author: ILT-Benutzer
Date: Tue, 30 Jan 1996 17:32
13 lines
788 bytes
Ich sitze hier vor meinem Institusrechner mit 32 Mbyte Ram und
kaempfe trotzdem um jedes Byte, da ich schnell Bilder und Listen
in einem DOS-Programm verarbeiten muss. 

Meine Frage: Ist es moeglich, irgendwie diese gesamten 32Mbyte fuer 
C++ Programme nutzbar zu machen ? Bisher habe ich es nur geschafft,
ca. 300 KB locker zu machen.

Eigentlich duerfte das Ansprechen von so viel Speicher doch kein Problem
sein, wenn der Compiler 386-Code erzeugt, oder ?


 
Re: Speicherprobleme mit Borland C
#1474
Author: 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
Re: Speicherprobleme mit Borland C
#1484
Author: Karl-Heinz Krause
Date: Wed, 31 Jan 1996 17:57
25 lines
1476 bytes
Am 30. Jan. 1996 schrieb ILT-Benutzer (user@ilt.fhg.de):

> Ich sitze hier vor meinem Institusrechner mit 32 Mbyte Ram und
> kaempfe trotzdem um jedes Byte, da ich schnell Bilder und Listen
> in einem DOS-Programm verarbeiten muss. 

> Meine Frage: Ist es moeglich, irgendwie diese gesamten 32Mbyte fuer 
> C++ Programme nutzbar zu machen ? Bisher habe ich es nur geschafft,
> ca. 300 KB locker zu machen.

> Eigentlich duerfte das Ansprechen von so viel Speicher doch kein Problem
> sein, wenn der Compiler 386-Code erzeugt, oder ?

Du solltest einen Compiler benutzen, der Protected-Mode-Code erzeugt,
der dann unter einem geeigneten DOS-Extender läuft.

Falls Du den GNU-Compiler benutzt: Kein Problem, der GNU-Compiler macht
das schon.

Falls Du Borland-Compiler benutzt: Die Compiler ab Version 4.0 können
das. Man braucht dann aber noch den DOS-Power-Pack, wo der DOS-Extender
drin enthalten ist.


Karl-Heinz Krause
Re: Speicherprobleme mit Borland C
#1478
Author: Joern Ihlenburg
Date: Wed, 31 Jan 1996 19:04
8 lines
693 bytes
ACHTUNG!!!

 EMail bitte an
 
   joern.ihlenburg@student.uni-tuebingen.de


ACHTUNG!!!
Re: Speicherprobleme mit Borland C
#1510
Author: Stephan A. Maciej
Date: Fri, 02 Feb 1996 16:51
32 lines
1919 bytes
On 02 Feb 96 (16:32), user@ilt.fhg.de wrote:
> [...]
> Meine Frage: Ist es moeglich, irgendwie diese gesamten 32Mbyte fuer
> C++ Programme nutzbar zu machen ? Bisher habe ich es nur geschafft,
> ca. 300 KB locker zu machen.

Das hoert sich irgendwie nach "DOS" und "konventioneller Speicher" an 8-(

> Eigentlich duerfte das Ansprechen von so viel Speicher doch kein Problem
> sein, wenn der Compiler 386-Code erzeugt, oder ?

Ja und nein. Unter "pure" (poor ;) DOS gibt es immernoch die Limitation auf
640K. Erst DPMI bzw. DOS-Extender bringen da Schwung in die Sache: dann
must Du Dein Programm fuer den Protected Mode compilieren lassen, dann
hast Du mehr oder weniger den gesamten freien Speicher (auch den ueber
der 1MB-Grenze) fuer Dein Programm zur Verfuegung.

386-Code bedeutet nur, dass der Compiler t.B. die 32-bit Register des
386er verwendet, es heisst nicht zwingend, dass auch die anderen
Features des 386er zur Geltung kommen ! Bedenke: Mit Borland Pascal
hast Du auch Zugriff auf den Protected Mode, der "Compiler" erzeugt aber
lediglich 286er Code... umgekehrt also: 386er Code ja, Protected Mode nein.

Bei Borland C++ 4.52 machst Du den Compiler erst durch den Erwerb des
Borland Power Pack for DOS startklar fuer den Protected Mode !

Stephan

-------------------------------------------------------------------------
 Stephan A. Maciej   stephan@maciej.muc.de   http://www.muc.de/~stephanm
       <<< Bug is a registered trademark of Microsoft Corp. >>>
-------------------------------------------------------------------------
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads