[NASM/Intel-Syntax] Stack erstellen
-
hallo,
ich hab das hier schonmal ein einem anderen thread gefragt, aber leider keine antwort bekommen.
es geht um das hier: http://de.wikibooks.org/wiki/Assembler-Programmierung_f%C3%BCr_x86-Prozessoren/_Unterprogramme_und_Interrupts
da wird gezeigt, wie man unter windows und nasm einen stack erstellt.
segment stack stack
resb 0x64aber wie erstelle ich unter linux einen stack?
und was ist der unterschied zwischen segments bei windows und sections bei linux?
-
Bei Win32/64 redet man ebenfalls von Sections; der Begriff "Segment" hat historische Gründe (16Bit-Realmode).
Den Stack brauchst du nicht explizit zu allozieren, da dies automatisch vom OS gemacht wird.
-
ok, aber warum machen die das in dem beispiel dann?
-
stack schrieb:
ok, aber warum machen die das in dem beispiel dann?
Weil es eine DOS Programm ist, das im Realmode läuft.
-
ok wär das auch geklärt.
woher weiß das betriebssystem, wieviel speicher da reserviert haben muss? wird das irgendwo in den ausführbaren dateien gespeichert.
und wo wir schonmal dabei sind, bei tasm (oder wie der assembler heißt), da gibts sowas:
.flat
was bedeutet das? und wie mach ich das bei nasm?
-
stack schrieb:
woher weiß das betriebssystem, wieviel speicher da reserviert haben muss? wird das irgendwo in den ausführbaren dateien gespeichert.
Der Stack wird bei Bedarf während der Laufzeit erweitert. Für Windows, kann man ein Mindestgröße im PE-Header über den Linker angeben. Ob, und wie viel davon tatsächlich reserviert wird, hängt vom der Windows Version ab.
-
danke, und für was ist das ".flat"?
-
Die Anweisung ".flat" gibt es bei TASM nicht. Eventuell ist Deine Angabe
stack schrieb:
... bei tasm (oder wie der assembler heißt) ...
zu ungenau.
viele grüße
ralph
-
ich hab jetzt noch ein bisschen gesucht.
sowas scheint es auch in nasm zu geben
.model tiny
aber was genau bedeutet das jetzt?
-
-
ok danke