5 svar
68 visningar
mekatronik 618
Postad: 17 aug 2023 16:37

Ö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 

Laguna Online 28611
Postad: 17 aug 2023 17:01

Hur skulle det stå, tycker du?

mekatronik 618
Postad: 17 aug 2023 17:42
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?

Laguna Online 28611
Postad: 17 aug 2023 20:29

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.

mekatronik 618
Postad: 17 aug 2023 21:24
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?

Laguna Online 28611
Postad: 17 aug 2023 21:34

Hur menar du att du skriver när du använder int *data?

Svara Avbryt
Close