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

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам