LINUX.ORG.RU

Тупой вопрос про шланг

 


0

2

Остальные вопросы тут ещё тупее, поэтому я спрошу. Можно ли сделать так, чтобы -fomit-stack-pointer работал как в гцц, а то он не аллоцирует фрейм только в тех, функциях, которые сами ничего не вызывают, остальные всё равно имеют push %rbp / mov %rbx, %rbp в начале. А то у меня такой быдлокод, что мне регисторов не хватает.

Ответ на: комментарий от anonymous

Видимо, но как это исправить ума не приложу. Есть, например, функции, с большим количеством передаваемых параметров. Так вот можно бы было объединить эти параметры в структуры и передать указатель на структуру, но тогда придется эти структуры создавать и инициализировать часто.

В общем, я не знаю, являются ли именно регистры узким местом, но как глянул на код, который компилятор выдаёт, так как-то мне это не понравилось. Вот и думал глянуть, будет ли разница с этой оптимизацией или нет. Если нет, то дело и не в регистрах

pr0n_actor
() автор топика
Ответ на: комментарий от pr0n_actor

В любом случае, если передаваемые параметры логически объединены, то их стоит и явно объединить. Ясность кода от этого только возрастет. Жертвовать ясностью - последнее дело.

Вот если будут проблемы с производительностью и будут результаты профайлинга, ясно указывающие, что на конструирование «структур» и обращение к ним уходит значительное время, тогда и стоит думать об этом.

anonymous
()
Ответ на: комментарий от pr0n_actor

В общем, я не знаю, являются ли именно регистры узким местом

Так запусти gcc и сравни, станет ли код прямее.

Помню, наваял я как-то функцию, использующую SSE через интеловские интринсики. Регистров XMM хватало как раз, чтобы в стек не свопить. Но icc и clang до этого не смогли допереть, а gcc — смог. Мораль: выбор — это хорошо.

const86 ★★★★★
()
Ответ на: комментарий от const86

Так это уже разные компиляторы будут. Я тебе скажу, что у меня ситуация наоборот, гцц давал куда более тормозной код.

pr0n_actor
() автор топика
Ответ на: комментарий от pr0n_actor

Так это уже разные компиляторы будут.

И?.. Я предлагал всё-таки выяснить, насколько лучше может выглядеть твоя функция с одним дополнительным регистром. Можно сделать это с помощью gcc, раз уж он умеет так. Можно пойти хардкорным путём и вылизать её вручную на асме. Есть шанс, что сильно лучше не станет и можно спокойно перестать думать обо всём этом. Или станет, тогда можно тюнить clang, или перейти на gcc, или придумать ещё что-то.

const86 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.