Forum: PC-Programmierung Wie gross kann ein Array sein beim 8086 mit TC 3.0


von Peter B. (funkheld)


Lesenswert?

Hallo, guten Tag.

Wie gross kann bitte ein Array sein beim 8086 mit dem TC 3.0

Das Programm wird ja in EXE abgespeichert und nicht mit COM.

Danke.
Gruss

von Fachlaie (Gast)


Lesenswert?

Peter B. schrieb:
> ein Array

Geht's vielleicht a bisserl genauer?

von Frank K. (fchk)


Lesenswert?

Peter B. schrieb:

> Wie gross kann bitte ein Array sein beim 8086 mit dem TC 3.0

Lies mal in Deiner DOku unter "Memory Model" nach.

Aus meiner Erinnerung:
small: alle Daten müssen in ein 64k-Segment passen
medium: (vergessen)
large: ein Array kann max 64k groß sein
huge: keine Grenze, dafür Code extrem ineffizient

fchk

von Programmierer (Gast)


Lesenswert?

Woher eigentlich das plötzliche Interesse am 8086... Vorbereitung auf 
eine Zeitreise?

von SchonWiederGast (Gast)


Lesenswert?

Programmierer schrieb:
> Woher eigentlich das plötzliche Interesse am 8086... Vorbereitung
> auf eine Zeitreise?
Er ist schon mitten drin. Und damals gab es noch kein Google, mit dem er 
selbständig nach Antworten suchen könnte.

von Dirk B. (dirkb2)


Lesenswert?

Frank K. schrieb:
> small: alle Daten müssen in ein 64k-Segment passen
> medium: (vergessen)
> large: ein Array kann max 64k groß sein
> huge: keine Grenze, dafür Code extrem ineffizient

ich habe in ganz dunkeln Ecken das in Erinnerung:
tiny: max. 64k für Code und Daten in einem Segment. Also mehr .com
small: jeweils max. 64k für Daten und Code, können unterschiedliche 
Segmente sein.
medium: max. 64k Code, Daten mehr als 64k, allerdings einzelne 
Datenobjekte (Array, malloc,...) auf 64k begrenzt.
large: wie medium, aber auch Code über 64k
huge: keine Grenze (außer den berühmten 640k)

von Paul P. (kater_karlo)


Lesenswert?

keine Ahnung in wieweit das vergleichbar ist, aber da damals überwiegend 
in Pascal programmiert wurde, frag doch mal im Freepascal/Lazraus Forum.
Da sind sicher eine Menge dabei, die noch das wissen von damlas haben 
und dir sagen können wir es zumindest bei Pascal war/ist.
Das sollte ja evtl. vergleichbar sein und die antworten fix und stellen 
keine dummen Fragen weil ihnen angeblich Details fehlen und s
https://forum.lazarus.freepascal.org/index.php?action=forum

von Peter B. (funkheld)


Lesenswert?

------------------------------------
Woher eigentlich das plötzliche Interesse am 8086... Vorbereitung auf
eine Zeitreise?
------------------------------------

Ich hatte mal angefangen 1979. War mit den Disketten , nicht so 
Berauschent hat mich aber interessiert.
1984 bin ich umgesattelt auf den VIC20 und CPCSchneider.

Hatte mir jetzt den MiSTer angeschafft um den VIC20-Core wieder mal zu 
nutzen als VIC20. Tolle Sache jetzt damit zu spielen. Dann kam dort der 
Core für den 486 für den MisTer. Da natürlich habe ich mich mit jetzt 71 
Jahren mal wieder beschäftigt. Ich Suchte eine Form vom C-Compiler der 
dazu passt mit ASM-Code als Inline. Und jetzt habe ich den TC 3.0 
gefunden.

Habe viel gesucht hier, mehrere Compiler ausgesucht , es war nicht immer 
das was mir gefallen hat.

Und jetzt hänge ich da wieder drin bis zur Halskrause.

Ja, so ist es.

GRuss

von Peter B. (funkheld)


Lesenswert?

Ja danke für die Antworten.

Ach sp, der MiSTer Core spielt mit einem Laufwerk und Festplatten als 
IMG die ich mit Windows10 erstelle und dann mit DOS6.22 auf der Dosebene 
im Core herstelle mit einstellen , formatieren usw.

GRuss

: Bearbeitet durch User
von Dirk B. (dirkb2)


Lesenswert?

Peter B. schrieb:
> Und jetzt habe ich den TC 3.0
> gefunden.

Dank fehlendem Internet hatten die damaligen Compiler eigentlich immer 
recht brauchbare Hilfen dabei.

von Paul P. (kater_karlo)


Lesenswert?

Ein Schneider CPC 6128 steht hier neben mir mit Grün und Farbmontior und 
einem kleinen Stapel Disketten:-) und KAsettenrekorder

von Peter B. (funkheld)


Lesenswert?

-----------------------------
small: jeweils max. 64k für Daten und Code, können unterschiedliche
Segmente sein.
----------------------------

Kann man dann mehrere Segmente haben mit jeweils 64kb für Daten zb?

Danke.

von leo (Gast)


Lesenswert?

Peter B. schrieb:
> Kann man dann mehrere Segmente haben mit jeweils 64kb für Daten zb?

Ja, s. Segmentregister. Aber du willst das nicht selber verwalten, nimm 
ein passendes Speichermodell.

leo

von Dirk B. (dirkb2)


Lesenswert?

Peter B. schrieb:
> Kann man dann mehrere Segmente haben mit jeweils 64kb für Daten zb?

Das wäre medium.
Bei small werden die Segmentregister am Anfang gesetzt und nicht wieder 
verändert.

von (prx) A. K. (prx)


Lesenswert?

Ein Array kann nicht mehr Elemente erhalten, als mit ptrdiff_t 
darstellbar ist. Wie gross kann also ein char-Array höchstens sein, wenn 
ptrdiff_t 16-Bit "int" ist?

Ebenso kann ein Array nicht grösser sein, als mit size_t darstellbar 
ist.

von leo (Gast)


Lesenswert?

Peter B. schrieb:
> Wie gross kann bitte ein Array sein beim 8086 mit dem TC 3.0

Wieso suchst du nix selber:
https://www.drdobbs.com/using-large-arrays-in-turbo-c/184402289

leo

von Jim M. (turboj)


Lesenswert?

A. K. schrieb:
> ptrdiff_t [...] size_t

Diese Typen gibts aber erst ~15 Jahre nach Einführung von Turbo C 3.0.

Hier müsste man mit sizeof(void *) o.ä. arbeiten...

von (prx) A. K. (prx)


Lesenswert?

Jim M. schrieb:
> Diese Typen gibts aber erst ~15 Jahre nach Einführung von Turbo C 3.0.

Die Typen mag es erst später gegeben haben, aber das Problem gab es 
schon vorher.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.