Pytanie jest zapewne dość proste i oczywiste dla tych ktorzy mają pojęcie o assemblerze. Chodzi mi owyrównanie stosu:
Często w kodzie asm pojawia się taka linia: and esp, ~0x0f , do czego jest i po co służy ?
Np. kod poniżej działa poprawnie:
section .text
extern _printf
global _main
_main:
push ebp
mov ebp,esp
and esp, ~0x0f
push dword[ff_result]
push print_uint32
call _printf
add esp, 16 [1]
_end:
xor eax,eax
pop ebp
ret
section .data
print_uint32 db "%d", 0x0
print_uint8 db "%c", 0x0
ff_result dd 87
A jesli usunę tą linię z wyrównniem stosu to w [1] wystarczy add esp,8 trochę tego nie łapię, hmm, w ogóle...
Any help appreciated :)