«« ( Date ) »» // «« ( Thread ) »» // ir3sp - 2011

Re: pozivanje funkcija

by Sasa Stojanovic
petak, 05. avgust 2011 - 11:00.

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
-----------------------------------------------------------------