Översätta från C till Arm v6
Hej, jag sitter med följande kod just nu och skall översätta allt detta till Arm v6 assembler språk:
Det jag fastna på: Varför laddar man data[i] till R6 när vi redan har ett register för *data som vi kan använda? Är det inte onödigt att ladda data[i] till R6? Notera att i Arm v6 processorn försöker man bara använda register R0-R3.
Tacksam för svar!
Använder denna processor https://www.cse.chalmers.se/edu/year/2016/course/EDA481_6/Documents/quickguide-mop-vt2016.pdf
Hur skulle det stå, tycker du?
Laguna skrev:Hur skulle det stå, tycker du?
Jag tänker att det inte behövs eftersom Int *data redan laddas i R0 i början av koden? Eller har jag fel?
int *data ska man troligen se som en deklaration, som i C. data är alltså en pekare som ligger i R0. Inget har laddats därifrån ännu.
Koden måste sedan hämta data[0], data[1] osv. till register för att arbeta med dem.
Laguna skrev:int *data ska man troligen se som en deklaration, som i C. data är alltså en pekare som ligger i R0. Inget har laddats därifrån ännu.
Koden måste sedan hämta data[0], data[1] osv. till register för att arbeta med dem.
Räcker det inte då med att man bara använder pekaren?
Man har ju laddat data[i] i R6, kan man inte istället spara en rad och bara använda int *data? Pekare fungerar väl som arrays i C?
Hur menar du att du skriver när du använder int *data?