stack "anlegen"
-
Hi,
also ich bin ein ziemlicher assembler neuling
ich wollt mal frage wie ich speicher im stack reservieren kann.so etwas in c++
void Test() { char szFile[ 65536 ]; szFile[ 0 ] = 'A'; szFile[ 1 ] = 'B'; ... }
soweit bin ich gekommen, scheint aber nicht zu funktionieren
push ebp mov ebp, esp sub esp, 65536 mov [ebp - 65536], 'A' mov [ebp - 65535], 'B' ... mov esp, ebp pop ebp
-
Hi.
Was fuer Fehler treten denn auf?
-
der speicher ist nicht gültig, aber der stack sollte eigentlich groß genug sein. ich hab das ganze als inline assembler mal getestet...
void Test() { char szFile[ 65536 ]; szFile[ 0 ] = 'A'; szFile[ 1 ] = 'B'; ... } __declspec( naked ) void Test2() { __asm { push ebp; mov ebp, esp; sub esp, 65536; mov [ebp - 65536], 'A'; mov [ebp - 65535], 'B'; ... mov esp, ebp; pop ebp; ret; } } void main() { // Test(); Test2(); }
wenn ich Test aufrufe wird scheinbar der stack "angelegt" und ist dann auch in Test2 gültig. ruf ich das nicht auf, ist der speicher bereich ungütltig. durch Test scheint der stack irgendwie aufgebaut zu werden.