Когда я использую gcc -O2
для оптимизации своей программы, gcc изменяет значение регистра RBP. Но я хочу сохранить его как FRAME BASE REGISTER, как это сделать?
Не тот же вопрос, что и: GCC: запретить использование некоторых регистров
Когда я использую gcc -O2
для оптимизации своей программы, gcc изменяет значение регистра RBP. Но я хочу сохранить его как FRAME BASE REGISTER, как это сделать?
Не тот же вопрос, что и: GCC: запретить использование некоторых регистров
-fomit-frame-pointer
включен по умолчанию на уровнях оптимизации -O, -O2, - О3, -Ос
Вам нужно использовать -fno-omit-frame-pointer
Однако причин для сохранения указателя кадра не так много, если только вы не занимаетесь отладкой и вам не нужно отслеживать кадр стека. В этом случае используйте вместо этого -Og
perf
может быть полезно использовать эффективную трассировку стека указателя кадра вместо необходимости .eh_frame
раскручивать метаданные.
- person Peter Cordes; 26.11.2019
%rbp
для какой-то другой цели, это мало что даст. С x86-64 давление регистров меньше. - person Brett Hale   schedule 27.11.2014