#cpu-registers #instruction-set
#cpu-регистры #набор инструкций
Вопрос:
Когда мы вызываем функцию, мы будем использовать указатель стека и указатель фреймера. Я знаю функцию и начальную позицию SP, но как насчет FP?
Ответ №1:
Это зависит от архитектуры и должно быть задокументировано в руководстве ABI.
Обычно функции не полагаются на правильную инициализацию указателя кадра перед прологом, а просто сохраняют значение в стеке и впоследствии устанавливают указатель кадра на текущий указатель стека (поэтому, следуя указателю кадра, вы найдете указатель кадра для предыдущей функции с фиксированным смещением). смещение).
Имейте в виду, что указатель кадра является необязательным большую часть времени (он вам нужен, если у вас нет отладочной информации и вы хотите следить за стеком вызовов или если используется текущая функция alloca
, в противном случае это просто регистр, который будет потрачен впустую.