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
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 ...
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?
movl (%ebx), %eax
Gruß Maddin