ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
3 мая
1407067 Топик полностью
RxTx (24.02.2024 16:55, просмотров: 154) ответил Codavr на Что подразумевается под словами научиться оптимально писать контролируя, что делает компилятор? Хочу все знать. Уверен, что нет тут никого, кто доподлинно знает все методы которыми пользуется тот же оптимизатор IAR и наверняка там есть ноухау известные только узкому кругу лиц.
> Уверен, что нет тут никого... Методы опттимизации дерева с трехадресным кодом предмет академических публикаций. Методы бэкенда, самой основной проблемой из которых является register allocation problem 

тоже предмет множества публикаций. Большинство компиляторов, которые тут фигурируют, не были оригинальными разработками и отталкивались, пусть и много лет назад от известных базовых проектов. Причем в области фронтэнда это продолжается и по сей день, затратно самостоятельно поддерживать все стандарты. Что касается кодогенерации, мэппинга на инструкции ( то самое "у-тю-тю, глядь во что он превратил") которыми восхищаются наблюдая asm листинги, то это ни что иное как ручная работа, результат труда, многих человеко-лет по шаблонизации и изыскиванию случаев когда применяется тот или иной шаблон. Это _НЕ_ результат волшебных "методов". Это результат ad-hoc работы ручками, хотя... где-то да, можно сказать что это "ноу-хау" или результат личных находок. Примерно для тебя объясню как это пишется - существует дерево правил шаблонизации. Выборка шаблонов (т.е. конечной подстановки тех или иных инструкций) древовидна и происходит по набору условий. Когда поступает задача оптимизировать код под новый вариант процессора, проверяют флаг нового процессора и дописывают множественные веточки, где шаблон инструкций заменен на другой, такой что для данного процессора работает быстрее. И вот постоянно дорабатывая все случаи и добиваются в итоге "магии". Работа эта требует массы человечеких ресурсов. Сбрасывали это догадайся на кого, на нас, конкретно в новосибирское отделение Intel.