Я новичок в ассемблере и заметил, что код x86, выдаваемый компиляторами, обычно сохраняет указатель кадра даже в режиме выпуска / оптимизации, когда он может использовать EBP
регистр для чего-то еще.
Я понимаю, почему указатель кадра может упростить отладку кода и может быть необходим, если он alloca()
вызывается внутри функции. Однако в x86 очень мало регистров, и использование двух из них для хранения местоположения кадра стека, когда одного было бы достаточно, для меня не имеет смысла. Почему опускание указателя кадра считается плохой идеей даже в оптимизированных / выпускаемых сборках?