Da dodam nesto vezano za push i pop instrukcije kao i za Stack.
Inace je nisam pocetnik.
Stack je deo memorije koji se cesto koristi za cuvanje podataka (u Windowsu i za postavljane dodatnih argumenata pri pozivanju funkcije).
Za upis i citanje Stack memorije se koriste instrukcije Push (cuvanje) i Pop (uzimanje).
Ono sto je upisano cita se obrnutim redom (zadnji podatak se cita prvi) bez preskakanja.
primer
Code:
mov eax,2 ; 2 u eax
push eax ; 2 u stack
mov eax,3
push eax ; 3 u stack
xor eax,eax ; cistimo eax
pop eax ; eax je sad 3
pop eax ; eax je sad 2
Isto je vazna i duzina podataka. Npr eax je cervorobajtni registar i kad uzimamo podatak treba i o tome da vodimo racuna. Naprimer ako prvo unesemo dvobajtni podatak pa cetvorobajtni kada uzimamo podatak prvo ocekujemo 4 pa 2 bajta. Ovde postoje i neki trikovi , ako naprimer hocemo da podelimo dword (4 bajta) na 2 worda (2) bajta uradimo
Code:
push m_dword
pop m_word1
pop m_word2
Pri radu sa Stack-om registar ESP je stack pointer.
Isto treba voditi racuna o balansiranju Stack memorije. U jednoj funkciji (do ret instrukcije) treba uzeti iz Stak-a isti broj bajtova koliko je upisano.
Toliko
Pozdrav