Какова начальная позиция указателя кадра?
Когда мы вызываем функцию, мы будем использовать Stack Pointer и Framer Pointer. Я знаю функцию и начальную позицию SP, но как насчет FP?
1 ответ
Это зависит от архитектуры и должно быть задокументировано в руководстве ABI.
Как правило, функции не полагаются на правильную инициализацию указателя кадра перед прологом, а просто сохраняют значение в стеке и впоследствии устанавливают указатель кадра на текущий указатель стека (поэтому, следуя указателю кадра, вы находите указатель кадра для предыдущей функции с фиксированным смещением).
Имейте в виду, что указатель кадра в большинстве случаев является необязательным (он вам нужен, если у вас нет отладочной информации и вы хотите следить за стеком вызовов или если используется текущая функция alloca
в противном случае это просто регистр, который пропадёт.