Интересные проекты компиляторов

Несколько лет назад я разработал compiler-construction DSL и написал компилятор compiler-construction для продукта, производимого compiler-construction моей компанией. В DSL использовалась compiler-design странная комбинация декларативных compiler-design правил, логики, управляемой compiler событиями, и композиционного compiler-design наследования. Это был очень compiler-design интересный проект, и я многому compiler-construction научился.

Это действительно compiler-construction пробудило во мне интерес compiler к парсерам и компиляторам, поэтому compiler-design я старался не отставать от compiler-design новых интересных разработок compiler-design в технологии компиляторов.

Что compiler-design касается оптимизации, вот compiler-design забавная статья, которую compiler я прочитал в прошлом году:

http://theory.stanford.edu/~aiken/publications/papers/asplos06.pdf

В compilers этой статье авторы описывают compiler-design метод автоматического обнаружения compiler оптимизаций глазка (превосходящих compiler-construction по производительности несколько compilers популярных серверных частей compilers компилятора C++) без необходимости compiler-construction написания экспертом большого compilers количества специального кода. Их compiler метод использует неконтролируемые compiler-design алгоритмы обучения для обнаружения compiler-construction ценной замены глазка.

После compiler-construction прочтения мне пришло в голову, что compilers их подход можно дополнить, предоставив compilers алгоритму «машинное описание» со compiler-construction списком всех инструкций (с compiler их основными и побочными compiler-design эффектами), поддерживаемых compiler-design целевой архитектурой процессора. Тогда, вместо compiler того чтобы использовать метод compiler грубой силы для поиска эквивалентных compiler-construction последовательностей инструкций, решатель compilers сможет найти эти последовательности compiler-construction гораздо проще.

Алгоритм машинного compiler обучения по-прежнему будет compiler использовать эмпирические compiler наблюдения для определения compiler наиболее эффективной последовательности compilers инструкций (поскольку эффекты compiler кэширования, микрооперации compiler-construction и конвейеризация почти требуют compiler эмпирических данных о времени), но compiler эквивалентность результатов compilers можно предсказать с помощью compiler-design алгебраического средства compiler-construction доказательства теорем. , работает compiler-design на машине описание.

В статье compiler-construction они говорят о том, что их compilers оптимизаторы могли обнаруживать compiler-construction последовательности замещения compilers глазка только из двух или compiler-construction трех инструкций (потому что compiler-construction в противном случае поиск compiler-construction методом грубой силы занял compilers бы слишком много времени compiler-construction и потреблял бы слишком много compiler-design памяти). Размещение интеллектуального compiler-design решателя в нужном месте алгоритма compiler может позволить ему работать compiler-construction с более длинными последовательностями compiler замены.

Anyhoo... дайте мне compilers знать, когда вы закончите compiler-construction этот проект! И не забудьте compiler упомянуть меня в разделе compiler-construction "Благодарности"!! ;-)

compiler-construction

2022-03-16T14:50:20+00:00