Assembler x64 schreiben
-
Hi Leute
Könnte mir jemand sagen wie man bei x64 (visual studio) Stack reserviert?
In manchen Tutorials wird gesagt man solle eine ungerade Zahl reservieren (für lokale Variablen), etwa so sub rsp 28h um den Stack auf 16 bit auszurichten. In anderen ist es eine gerade Zahl. Wieder andere sagen man muss 16 bit mehr reservieren als die Variablen Platz einnehmen, warum ? Könnte mir jemand ganz genau erklären wie das mit dem Stack funktioniert? Bitte nur die antworten die es wirklich absolut genau wissen, so ungefähr weiss ich das auch.
-
Hast Du Dich schon bei Microsoft schlau gemacht?
https://msdn.microsoft.com/library/ew5tede7.aspx
viele grüße
ralph
-
Hallo,
Der C Compiler (x64) macht das so:
Die Funktion mit den meisten Parametern wird "gemerkt" und die Anzahl
der Parameter * 8 + 8 (für die Rücksprungadresse) = Stackbedarf.Du kannst aber auch pauschal
sub rsp, 512
nutzen.
Man reserviert immer / 8 teilbare Werte, keine ungeraden!!!
Da die ersten 4 Parameter in Registern übergeben werden sind mind. 40d (28h)
zu reservieren. 4*8+8 für den Call!Schau dir mal den asm Output von C an.
Nicky