2012-06-07 12 views
5

Sulle piattaforme Intel, BP viene utilizzato per puntare all'inizio del frame dello stack e per accedere agli argomenti [bp+0x??] e alle variabili locali [bp-0x??].Qual è l'equivalente del registro BP (Frame Pointer) sui processori ARM?

Quale registro viene utilizzato in ARM? Oppure, l'indirizzamento si basa solo su SP?

[Non ho infrastrutture da compilare e disassemblare per vederlo da solo. Riferimento a AAPCS non mi ha aiutato neanche]

+0

Non v'è alcun equivalente per ** ** AAPCS (2003); il vecchio ** APCS ** ha R11 come 'FP' in modalità ARM. Poiché ARM ha più registri, di solito non è necessario indicizzare i locali tramite lo stack/frame. –

risposta

7

Quello che stai cercando è il puntatore del telaio. Generalmente, R7 funge da puntatore del frame in modalità THUMB e R11 funge da puntatore del frame in modalità ARM. Ma è a discrezione del sistema operativo modificare questa convenzione se lo desidera.

Leggi here

+3

Si noti che questo è un problema ABI, non un problema di processore. (Il processore non si cura di quale registro si utilizza.) Diversi sistemi operativi possono fare le cose in modo diverso. –

+0

Grazie a @RaymondChen. Ho aggiornato la mia risposta per riflettere le vostre viste (corrette) –

+2

... e se avete un registro puntatore stack, i compilatori moderni non hanno realmente bisogno di puntatori di fotogrammi (FP); conoscono il layout dello stack e possono quindi indicizzare dall'SP per ottenere tutto ciò che potrebbe aver bisogno di accedere dal FP. Quindi un FP è davvero opzionale, a seconda del compilatore. –

Problemi correlati