Re: pozivanje funkcija
U dokumentaciji koju ste dobili uz kompajler se govori o konvenciji pozivanja u glavi 9. Dalje koristite Google (ARM EABI calling convention) i naci cete odgovore.
Pozdrav,
Sasa
--- On Fri, 8/5/11, Branislav Petrović 05/0408 <pb050408d@student.etf.rs> wrote:
From: Branislav Petrović 05/0408 <pb050408d@student.etf.rs>
Subject: [ir3sp] pozivanje funkcija
To: ir3sp@rti.etf.rs
Date: Friday, August 5, 2011, 5:40 AM
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.
-----------------------------------------------------------------
unsubscribe:
minimalist@rti.etf.rs?subject=unsubscribe%20ir3sp
-----------------------------------------------------------------
Pozdrav,
Sasa
--- On Fri, 8/5/11, Branislav Petrović 05/0408 <pb050408d@student.etf.rs> wrote:
From: Branislav Petrović 05/0408 <pb050408d@student.etf.rs>
Subject: [ir3sp] pozivanje funkcija
To: ir3sp@rti.etf.rs
Date: Friday, August 5, 2011, 5:40 AM
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.
-----------------------------------------------------------------
unsubscribe:
minimalist@rti.etf.rs?subject=unsubscribe%20ir3sp
-----------------------------------------------------------------
- References:
- pozivanje funkcija
- From: Branislav Petrović 05/0408 <pb050408d@student.etf.rs>
- pozivanje funkcija
Previous by date: pozivanje funkcija
Next by date: Re: pozivanje funkcija
Previous by thread: pozivanje funkcija Next by thread: Re: pozivanje funkcija
Previous by thread: pozivanje funkcija Next by thread: Re: pozivanje funkcija