-fomit-frame-pointer, безопасно ли его использовать? - PullRequest
6 голосов
/ 25 февраля 2010

Я видел во многих местах, что люди часто используют опцию -fomit-frame-pointer при компиляции кода C / C ++, и мне интересно, безопасно ли использование этой опции? Для чего он используется?

Большое спасибо, с наилучшими пожеланиями.

Ответы [ 2 ]

11 голосов
/ 25 февраля 2010

Опция безопасна, но затрудняет отладку. Обычно компилятор C выводит код, который сохраняет в обычном регистре (ebp на x86) указатель на фрейм стека для функции. Отладчики используют это для распечатки содержимого локальных переменных и другой подобной информации. Флаг -fomit-frame-pointer указывает gcc не беспокоиться об этом регистре. В некоторых ситуациях это может привести к незначительному увеличению производительности, в основном из-за уменьшения занимаемой площади кода (что лучше для кэша) и из-за дополнительного доступного регистра (особенно в x86 в 32-битном режиме, который, как известно, не работает в регистрах).

2 голосов
/ 25 февраля 2010

Пока ваш код не полагается на неопределенное поведение, тогда он совершенно безопасен. Это может привести к появлению неопределенных ошибок в поведении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...