Pointer

M

Mathias W.

Guest
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute, mir ist da was aufgefallen, kanns mir aber nicht genau erklären! :?

Wenn ich z.B. eine Integerzahl (z.B. 26) ins Pointerformat umwandle, was passiert mit dieser Zahl?

Kann ich mit Pointern noch rechnen oder geht das nur mit den z.B. Integernvariablen?

Ich habe nämlich versucht und bin damit gescheitert, mit einer Pointerzahl
bzw Intergervariable die ins Pointerformat umgewandelt wurde, zu rechnen und da kammen riesige Summen bei raus!!!

Hat das irgendwas mit dem Befehl "SLD3" zutun?

Gruß Mathias :wink:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Mathias,

der einfachste Fall eines Pointers ist 32Bit lang, ein Bereichszeiger der Form p#y.x, wobei y für die Byte-Adresse und x für die Bit-Adresse steht.
Dieser wird im Speicher in einem Doppelwort abgelegt, allerdings wird die Bitadresse (möglich 0..7) in den untersten 3 Bits abgelegt, deshalb wird, wenn man die Byteadresse manipulieren will auch um drei nach links geschoben.
Schieben um drei nach links entspricht einer Multiplikation mit 8 => aus Deiner 26 müsste 208 werden, aber wie Du die 26 so einfach in einen Pointer umwandelst leuchtet mir nicht ein. Denn pointer zeigen, wie oliver beschrieben hat, nur auf die entsprechenden Speicherbereiche in der Steuerung.

Bitte korrigieren, ist schon etwas her.

mfg

Edward
 
ja das hängt mit SLD3 zusammen. Aber überhaupt ist es nicht empfehlenswert mit Pointern zu rechen, da diese auch die Bereichskennung enthalten können. Lieber vorher rechen und ins Pointerformat schieben. Übrigens welche Lösung nimmste jetzt beim Schieberegister?

MfG
André Räppel
 
Die einfachste...

Hallo Andre, ich habe deine Lösung genommen die war am einfachsten nachzuvollziehen für mich!
Jetzt wollt ich das ganze halt noch fürn Schieberegister mit dem ich ganze Wörter oder sogar Doppelwörter schieben kann, umschreiben und dabei ist mir dann aufgefallen das die Pointer bzw "Meine Zahlen" mit den ich gerechnet hatte ziemlich groß wurden und mir dabei wieder die CPU abgekackt ist.
Dann bin ich der Sache auf den Grung gegangen und habe das ganze dann dahin gehend abgeändert das ich mit meinen Intergern rechne und diese dann wieder ins Pointerformat umwandele.
Der ganze Fehler ist aufgetreten, da ich ja nun für Wörter 2 Bytes brauche und das sich dadurch ja auch die ganze adressierung ändert!
Ich habe es aber geschafft und es läuft!

Mir war das Ganze halt irgenwie komisch vorgekommen, und da ich keine Erklärung dafür hatte, dachte ich mir fragste mal nach!!! :)

Gruß Mathias und danke für Eure erläuternden Worte.
 
Zurück
Oben