Какова начальная позиция указателя кадра

#cpu-registers #instruction-set

#cpu-регистры #набор инструкций

Вопрос:

Когда мы вызываем функцию, мы будем использовать указатель стека и указатель фреймера. Я знаю функцию и начальную позицию SP, но как насчет FP?

Ответ №1:

Это зависит от архитектуры и должно быть задокументировано в руководстве ABI.

Обычно функции не полагаются на правильную инициализацию указателя кадра перед прологом, а просто сохраняют значение в стеке и впоследствии устанавливают указатель кадра на текущий указатель стека (поэтому, следуя указателю кадра, вы найдете указатель кадра для предыдущей функции с фиксированным смещением). смещение).

Имейте в виду, что указатель кадра является необязательным большую часть времени (он вам нужен, если у вас нет отладочной информации и вы хотите следить за стеком вызовов или если используется текущая функция alloca , в противном случае это просто регистр, который будет потрачен впустую.