pozivanje funkcija
Da li mozete da mi pomognete, pokusavam da pronadjem kakvo je pravilo
za stavljanje na stek prilikom poziva funkcija definisanih u C-u.
Uradio sam disassemble programa i primetio da se na pocetku svake
funkcije izvrsi push uglavnom registara r11 i r14, ali vidim da je
negde i r4, r5, a mozda i jos neki.
Jasno mi je za r14, to je lr registar, koliko sam razumeo r11 je kao bp registar i ova 2 registra se uvek stavljaju na stek, ali ne znam kad se stavljaju r4, r5 i ostali registri.
Konkretno za funkciju int CreateAndStart(void (*f)(), int timeSlice); na stek se stavljaju r4, r11 i lr registri. Ova funkcija ima samo 2 argumenta od toga jedan je int sto je 4B, a drugi adresa funkcije koji je valjda takodje 4B, tako da pretpostavljam da se oni bez prekoracenja prosledjuju preko r0-r3 registara.
Jasno mi je za r14, to je lr registar, koliko sam razumeo r11 je kao bp registar i ova 2 registra se uvek stavljaju na stek, ali ne znam kad se stavljaju r4, r5 i ostali registri.
Konkretno za funkciju int CreateAndStart(void (*f)(), int timeSlice); na stek se stavljaju r4, r11 i lr registri. Ova funkcija ima samo 2 argumenta od toga jedan je int sto je 4B, a drugi adresa funkcije koji je valjda takodje 4B, tako da pretpostavljam da se oni bez prekoracenja prosledjuju preko r0-r3 registara.
- Follow-Ups:
- Re: pozivanje funkcija
- From: Nenad Žikić <nenad.zikic@gmail.com>
- Re: pozivanje funkcija
- From: Sasa Stojanovic <stojsasa@yahoo.com>
- Re: pozivanje funkcija
Previous by date: Re: Emuliranje instrukcija na asembleru
Next by date: Re: pozivanje funkcija
Previous by thread: Re: Emuliranje instrukcija na asembleru Next by thread: Re: pozivanje funkcija
Previous by thread: Re: Emuliranje instrukcija na asembleru Next by thread: Re: pozivanje funkcija