Nie rozumiem, co naprawdę robi pop
w zestawie. Czy pop
przesuwa na koniec wartość o wartości PUSH
(co oznacza, że nie ma ona zastosowania, jeśli mamy MOV
wartość po ostatnim elemencie ed) lub czy po prostu wyskakuje ona z wartości, która jest ostatnia na stosie (w związku z tym dotyczy zarówno MOV
i PUSH
), czy też ma to, co kiedykolwiek wartość wskazywana przez wskaźnik stosu? Rozważmy następujący kod:Jak działa funkcja push i pop w zespole?
push $4
mov $5, -4(%esp)
add $4, %esp (esp pointing to an unknown value)
pop %ebp
Więc w tym kodzie będzie wartość poped do ebp
być 4, 5 lub nieznane wartości wskazywanej przez esp
?
Możliwy duplikat [rejestrów Assembler: Push/pop?] (Http://stackoverflow.com/questions/4584089/assembler-push-pop-registers) –