Что эквивалентно регистру BP (Frame Pointer) на процессорах ARM?

На платформах Intel,BP используется для указания на начало кадра стека и для доступа к аргументам[bp+0x??] и локальные переменные[bp-0x??].

Какой регистр используется в ARM? Или адресация основана только на SP?

[У меня нет инфраструктуры для компиляции и дизассемблирования, чтобы увидеть это самому. Ссылка на AAPCS мне тоже не помогла]

 artless noise06 авг. 2016 г., 17:06
Там нет эквивалента дляAAPCS (2003); старшийAPCS имеет R11 в качествеFP в режиме ARM. Поскольку ARM имеет больше регистров, обычно нет необходимости индексировать локальные объекты через стек / фрейм.

Ответы на вопрос(1)

Решение Вопроса

R7 действует как указатель кадра в режиме THUMB иR11 действует как указатель кадра в режиме ARM. Но ОС может изменить это соглашение по своему усмотрению.

ЧитатьВот

 09 июн. 2012 г., 05:25
Обратите внимание, что это проблема ABI, а не проблема процессора. (Процессору все равно, какой регистр вы используете.) Различные ОС могут работать по-разному.
 09 июн. 2012 г., 14:39
Некоторые ABI определяют конкретный регистр указателя кадра (поэтому ОС может выполнять обход стека).
 09 июн. 2012 г., 11:53
Я не знаю, почему ОС будет иметь какое-либо отношение к этому соглашению. Он может использовать конкретное соглашение внутри страны, но приложения не должны заботиться; им нужно только знать соглашение дляcalling Примитивы ОС, и нужно использовать это соглашение только для таких вызовов. В противном случае они должны быть свободны делать то, что им нравится для соглашений об управлении вызовами / кадрами.
 09 июн. 2012 г., 11:50
... и если у вас есть регистр указателя стека, современные компиляторы действительно не нуждаются в указателях кадров (FP); они знают схему стека и поэтому могут индексировать из SP, чтобы получить все, что им могло понадобиться для доступа из FP. Так что FP действительно необязателен, в зависимости от вашего компилятора.
 09 июн. 2012 г., 09:21
Спасибо @RaymondChen. Я обновил свой ответ, чтобы отразить ваши (правильные) взгляды

Ваш ответ на вопрос