Autor Thema: Wohin kann man mit Werten?  (Gelesen 16948 mal)

Paula

  • Gast
Gespeichert
« am: 21. May 2014, 17:02 »
Hey,
wohin kann man Werte abspeichern? In den RAM kann man ja nur einstellige Zahlen speichern richtig?
Denn ich hätte gerne eine Art Lager für Werte (nur Zahlen).
Kennt wer noch so eine Art "Lager"?

LG

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 21. May 2014, 17:23 »
Was meinst du mit Lager?
Im RAM kannst du jede Form von Datenstruktur (Zahlen (Ganzzahlen und rationale Zahlen), Zeichenketten, Strukturen, etc.) speichern.
Ist alles eine Frage der Interpretation.
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

Paula

  • Gast
Gespeichert
« Antwort #2 am: 21. May 2014, 17:59 »
Mit Lager meine ich einen Ort wo ich alle Werte ablegen kann, die ich aber vielleicht später noch mal brauche

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 21. May 2014, 19:00 »
Solange du das System nicht wieder startest, nimmst du den RAM.
Es liegt dann an dir, dass du dir die RAM-Adresse merkst an der du deinen Wert gespeichert hast, zzgl. der Größe des Wertes.
Dann kannst du immer wieder darauf zugreifen.
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 21. May 2014, 19:10 »
Also entweder ist die Frage schlecht formuliert, oder die Antwort lautet einfach Variable.

Vielleicht kann ja auch mal jemand, der ein Buch über Programmiersprachen gelesen hat, ein brauchbares für Anfänger empfehlen.

Ich kann leider nur auf existierende Listen verweisen:

Auf C++.de gibt es eine Liste von Büchern: http://www.c-plusplus.de/forum/f65
Im Wiki haben wir auch ein paar Bücher: http://www.lowlevel.eu/wiki/Literatur
Und natürlich gibt es bei Amazon was zu C/C++ oder allgemein Programmieren etwas für jeden Geldbeutel.
Dieser Text wird unter jedem Beitrag angezeigt.

Paula

  • Gast
Gespeichert
« Antwort #5 am: 21. May 2014, 19:43 »
Welche RAM Adressen sollte man denn besser nicht nutzten?
Hab im Wiki nichts gefunden

streetrunner

  • Beiträge: 67
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 21. May 2014, 20:49 »
Hier steht was dazu:http://www.lowlevel.eu/wiki/Teil_7_-_Physische_Speicherverwaltung#Speicherverwaltung_initialisieren
Falls du nicht mit Multiboot bootest dann musst du das BIOS fragen (am besten gleich alles durchlesen):http://wiki.osdev.org/Detecting_Memory_%28x86%29

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #7 am: 21. May 2014, 21:04 »
Ich glaube mal, dass es ein grundlegendes Verständnisproblem ist.

Du bekommst den Speicher (die Adressen) auf zwei Arten, zumindest wenn wir mal von C/C++ ausgehen.
Entweder deine Werte (Variablen) liegen auf dem Stack, der ist auch im RAM zu finden.
Wenn man mal von der OS-Entwicklung weg geht, dann bekommt dein Programm vom OS einen Speicher auf dem RAM zugewiesen, der als Stack
verwendet wird. Dann kannst du innerhalb von Funktionen Variablen definieren, die dann vom Compiler auf den Stack gelegt werden.
Allerdings sind diese Werte verschwunden, wenn die Funktion abgearbeitet wurde.

Eine andere Möglichkeit ist der Heap. Die Variablen auf dem Heap bleiben auch gültig, wenn die Funktion beendet ist.
Dazu gibt es beim OS eine sogenannte Speicherverwaltung. Die garantiert dir, dass dein Speicher nicht doppelt belegt wird.
Dazu gibt es bei C die Funktionen malloc und free. Malloc holt dir Speicher, den du verwenden kannst und free gibt ihn wieder zurück.
Nach dem free ist der Wert natürlich ungültig, da du damit dem OS sagst, dass du diesen Speicher nicht mehr benötigst.
Bei C++ heißen die Funktionen new und delete. Machen eigentlich genau das gleiche. Allerdings werden hier noch Konstruktoren der Klassen aufgerufen, weshalb es andere Funktionen als malloc und free sind. Das führt aber hier zu weit.

Für dich ist es nur wichtig zu wissen welchen Speicher es gibt. Also auf dem Stack und auf dem Heap.

Falls es wirklich um die OS-Entwicklung geht, dann sag nochmal bescheid. Dann muss man das etwas anders erklären.
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

Paula

  • Gast
Gespeichert
« Antwort #8 am: 21. May 2014, 21:11 »
@rizor
Es geht um OS-Entwicklung, das Problem ist das ich manche Variablen behalten will, die sollen sozusagen für immer erhalten bleiben und nicht nach dem herunterfahren verschwinden. Meine erste Idee war das man einfach eine Datei anlegt in der man einfach die Variable mit dem Wert abspeichert, aber ich hab zur Zeit bei meinem OS viele Baustellen da will ich jetzt keine weitere aufmachen.

LG

rizor

  • Beiträge: 521
    • Profil anzeigen
Gespeichert
« Antwort #9 am: 21. May 2014, 21:15 »
Das ist komplizierter. Dafür kannst du Festplatten, USB-Sticks und Disketten verwenden. Allerdings brauchst du dafür entsprechende Treiber.
Entweder einen Treiber für die Festplatten, bzw. den USB-Hub oder einen Floppy-Treiber (der noch der Einfachste sein dürfte).
Dann brauchst du noch einen Dateisystemtreiber (z.B. FAT, NTFS oder ext2/ext3/ext4). Und dann kannst du dir überlegen wie die Datei aussehen muss.
Würde dir empfehlen die Idee erst einmal zu verwerfen. Dazu brauchst du eine funktionierende Speicherverwaltung, etc.
Programmiertechnik:
Vermeide in Assembler zu programmieren wann immer es geht.

Paula

  • Gast
Gespeichert
« Antwort #10 am: 21. May 2014, 21:40 »
Das mach ich auch, erstmal müssen die Baustellen beendet werden

 

Einloggen