Forum
Tipps
News
Menu-Icon

Assembler und Pointer

Und noch eine Frage an alle hellen Köpfe da draussen:

wie kann ich in ein Register einen "Pointer" (bzw. eine Adresse) setzen. Wir wollen eine Funktion mit einem call-by-Reference aufrufen. Beim Start der "main" haben wir uns Platz für 2 Variablen gelassen, in denen am Ende das Ergebnis stehen soll. Nun will ich auf den Stack einen "Pointer" (bzw. die Adresse) zu einer der freien Speicherstellen hinterlegen. Allerdings habe ich nur den ebp zur Verfügung ... leider funktioniert ein

Zitat

  push -4(%ebp)

nicht wirklich, da Assembler anscheinend bei dieser Vorgehensweise den Wert in den Stack packt, der an der Stelle -4(%ebp) steht ... ich will aber nur die Adresse haben. Ich programmiere übrigens im ASM (also nicht nasm). Kriegt man die möglicherweise von Hand raus?

Anders herum weiß ich es ja ... ein sogenannter "indirekter" Zugriff ...
Zitat

  movl (%ebx), %eax
schreibt mir den Wert, auf den der in ebx hinterlegte Zeiger zeigt in das Register eax ... nur weiß ich nicht, wie es anders herum geht. Wie bekomme ich von einem Speicher (vor allem im Stack) die Adresse raus und kann sie als Wert einem Register übergeben, oder aber eben als Wert auf den Stack packen?

Gruß Maddin
« Fachliteratur für C++ und VBAAssembler Codeschnipsel »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Undo
"Undo" steht für "Rückgängig machen": eine häufig genutzte Funktion n vielen Programmen und Apps, die es ermöglicht, kürzlich durchgefü...

IP-Adresse
Die IP-Adresse ist eine Adresse in einem Computernetzwerk, das auf dem Internet-Protokoll (IP) basiert. Sie besteht aus vier Zahlenblöcken mit Zahlen von 0 bis 255, ...

MAC-Adresse
Eine Media-Access-Control-Adresse (MAC-Adresse) ist die Hardware-Adresse jedes einzelnen Netzwerkadapters. Jede Netzwerkkarte ist mit einer zwölfstelligen Bezeichnun...