2012-06-07 13 views
5

Na platformach intel, BP służy do wskazywania początku stosu ramek i uzyskiwania dostępu do argumentów [bp+0x??] i lokalnych zmiennych [bp-0x??].Jaki jest odpowiednik rejestru BP (wskaźnik ramki) na procesorach ARM?

Który rejestr jest używany w ARM? Czy adresowanie jest oparte tylko na SP?

[Nie mam infrastruktury do kompilacji i demontażu, aby zobaczyć ją sam. Odwołanie się do AAPCS również mi nie pomogło]

+0

Nie ma odpowiednika dla ** AAPCS ** (2003); starszy ** APCS ** ma R11 jako 'FP' w trybie ARM. Ponieważ ARM ma więcej rejestrów, zwykle nie jest konieczne indeksowanie locals za pomocą stosu/ramki. –

Odpowiedz

7

Czego szukasz to Frame Pointer. Ogólnie rzecz biorąc, R7 działa jako wskaźnik ramki w trybie THUMB, a R11 działa jako wskaźnik ramki w trybie ARM. Ale według systemu operacyjnego zmiana tej konwencji, jeśli chce.

Czytaj here

+3

Należy zauważyć, że jest to problem ABI, a nie problem z procesorem. (Procesor nie dba o to, z jakiego rejestru korzystasz.) Różne systemy operacyjne mogą robić różne rzeczy. –

+0

Dzięki @RaymondChen. Zaktualizowałem swoją odpowiedź, aby odzwierciedlić (poprawne) widoki –

+2

... a jeśli masz rejestr wskaźnika stosu, nowoczesne kompilatory naprawdę nie potrzebują wskaźników ramek (FP); znają układ stosu i mogą indeksować SP, aby uzyskać wszystko, czego mogli potrzebować, aby uzyskać dostęp z FP. Tak więc FP jest naprawdę opcjonalny, w zależności od twojego kompilatora. –

Powiązane problemy