ScriptSprache

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

Geeecko

Betreff: ScriptSprache

BeitragMi, Sep 24, 2008 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Huhu Leute!
Ich habe mal eine Frage (Da ja der ScriptSprachen-Trend ausgebrochen ist xD):
wie funktioniert das eigentlich, mit der SPeicherung von Daten.
Die Variablen (also keine objekte => Kein dynamischer speicher) weiß man ja vorher. also wie viel platz die einnehmen. Die kann man ja dann beschreiben wiue man will.
Aber wenn ich dann zum Beispiel eine Recheneinheit nachbilden will, wie mach ich das?
Ich habe 2 Adressen. In einer steht ein Integer, in der anderen ein Float.
Wie kann ich die beiden jetzt addieren?
Muss ich gucken:
Wenn 1Parametr = int und 2Parameter = float dann int(parameter1) + float(parameter2)...
?
Kennt wer ein Tutorial, für solch eine Scriptsprache (mit zwischen code bzw bytecode)?
Im allgemeinen weiß ichs... Nur ich bleibe immer da hängen, wenns um Variablen geht, da ich nie weiß, was für ein typ die variable ist. (Wissen schon, jedoch nicht, was ich dann mit ihr anfangen soll).
Wird zum beispiel "print test_var" ausgeführt, muss ich bei Print ja gucken, was für ein Typ die Variable ist. Wenn es ein Int ist dann => Daten als Int aus dem "RAM" holen... wenn float dann Daen als float aus dem "RAM" holen...?
Wisst ihr was ich meine? Schwer zu erklären... hoffe ich wisst was ich meine...

lg MD

peacemaker

BeitragDo, Sep 25, 2008 11:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Womit machste die?
Wie soll sie funktionieren? Kompiliert? Interpretiert?
~Tehadon~
www.tehadon.de
http://www.blitzforum.de/worklogs/14/

Noobody

BeitragDo, Sep 25, 2008 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, ich habe mich einige Zeit auch mit Scriptsprachen beschäftigt und kann dir meine Lösung dazu erklären.
Alle globalen Variablen liegen bei mir in einer Bank, bei der für jede Variable 5 Bytes zugeordnet werden.
1 Byte spezifiziert den Variablentyp, die anderen 4 Bytes enthalten die Daten. Dann existiert eine Lesefunktion, die die Werte aus der Bank ausliest und in den Variablentyp umcastet, den man will.

Beispiel: Ich habe eine Variable 'Prozent#', die in der Bank abgespeichert wird. Nun ruft die Print - Funktion die Lesefunktion auf und gibt die Position der Variablen 'Prozent#' in der Bank an; ausserdem gibt sie an, dass sie den Typ String erwartet.
Die Lesefunktion liest das erste Byte der Variablen in der Bank aus. Sie merkt nun, dass sie einen Float vor sich hat und liest den Wert entsprechend mit PeekFloat aus den anderen 4 Bytes aus. Dann wandelt es den Wert in einen String um (weil das ja erwartet wird) und legt ihn in der globalen Variable 'ResultString$' ab. Die Print - Funktion gibt also am Schluss nur den Inhalt von ResultString$ aus, welchen Typ die Variable urspünglich hatte, braucht sie nicht zu wissen. Da andere Funktionen auch andere Datentypen erwarten, braucht man natürlich auch noch globale Variablen wie ResultInt, ResultFloat etc.
Für Integer läuft das Prozedere ungefähr gleich ab wie bei Floats; wobei nun String - Variablen eine spezielle Behandlung benötigen, da die Daten nicht mehr in die 4 Bytes hineinpassen.
Da habe ich es so gelöst, dass in den vier Bytes ein Integer liegt, welcher den Index des Strings in einem String - Array darstellt. Dann liest die Funktion also zuerst den Index aus und dann den eigentlichen String, der dann in 'StringArray$( Index )' liegt.

Ich habe mir nun keine Überlegungen gemacht, wie man das nun mit Objekten löst (weil meine Scriptsprache nicht OOP ist), daher müsstest du dir diesbezüglich noch etwas einfallen lassen.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Geeecko

BeitragDo, Sep 25, 2008 15:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Noobody Smile
Genau so meinte ich das! Smile
Jetzt weiß ich wie ich das machen könnte, fals ich es mache Wink
Also danke danke danke Smile Very Happy

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group