Хочу научиться смотреть, во что скомпилился какой-нибудь метод класса.
Мне интересно прежде всего:
- заинлайнился метод или функция или нет
- сколько регистров / памяти сожрали аргументы
- как вернулся результат, использовалась ли RVO (Return Value Optimization) или нет.
- посмотреть на всё это и подумать про эффективность юзания кеша
Я так понимаю, надо делать g++ -S code.cpp
и тупо читать асмокод? Аскомод в том формате, в котором генерит его по умолчанию g++ или есть более правильный формат? Или может есть спец-просмотровщики этого ассемблера, сильно облегчающие его понимание?
Что помогает «смотреть на всё это и думать об эффективности юзания кеша»? Валгриндовый кешгринд - это да, но это эмпирический путь.
Полученный asm уже не подвергается никакой оптимизации, а в таком виде и будет преобразован в бинарь и поступит в проц? (т.е. дальнейшие оптимизации уже будет делать проц со своими конвейерами?)