Интересные проекты компилятора - PullRequest
3 голосов
/ 22 октября 2010

Я смотрю на семестровый проект в компиляторах, который также может превратиться в мою дипломную работу.У меня нет большого опыта в этой области (я написал небольшой «переводчик» для Паскаля как часть моей работы бакалавриата) - я больше увлекался машинным обучением и искусственным интеллектом.Идея состоит в том, чтобы принять это как вызов и изучить кое-что в процессе.

Я действительно взглянул на: Интересные проекты компилятора , но большинство идей кажутся устаревшими.

То же самое относится и к странице открытых проектов LLVM --- http://llvm.org/OpenProjects.html

Поскольку у меня будет семестр для работы над этим, я стремлюсь к чему-то немного значительному.Я хотел бы работать над оптимизацией или распараллеливанием.Над чем интересно работать?

1 Ответ

1 голос
/ 05 декабря 2010

Не стесняйтесь вносить свой вклад в Феликс, существует неограниченное количество подходящих мини-проектов, связанных практически со всем, что вас интересует :) Феликс написан на Ocaml, поэтому вам придется работать с этим.Парсер использует Scheme для кодов действий.Феликс генерирует C ++, если вам нужна поддержка во время выполнения.Возможные подпроекты включают:

  1. метатипирование и полиадическое поведение
  2. улучшение доказательства теорем (Феликс генерирует, почему форматирует файлы из утверждений)
  3. Расширение диапазона оптимизаций
  4. Добавление новых оптимизаций
  5. Поддержка генерации OMP-директив
  6. Улучшенный сборщик мусора

Эти проблемы варьируются от простого к сложному, как вам нужно.Уровень знаний о продукте варьируется от необходимости понимать все до простых структур данных.

Базовая информация: Felix - это статически типизированный процедурный язык сценариев в семействе ML, который работает быстрее, чем C.генерирует C ++, который передается вашему компилятору C ++ для генерации двоичных файлов машин.Он использует менеджер ресурсов, чтобы найти все ресурсы и связать их, поэтому он так же прост в использовании, как и Python.Он включает C и C ++, поэтому можно использовать большинство ваших библиотек C / C ++.Это целый программный анализатор, который фокусируется на высокоуровневых оптимизациях и позволяет вашему компилятору C ++ выполнять низкоуровневые.Оптимизация высокого уровня включает семантические правила очень высокого уровня, такие как указание, что обратное изменение списка дважды не допускается, или реализация параллельных назначений для минимизации затрат на хвостовую рекурсию, однако встраивание функций и переменных является основным источником производительности.Семантика выбрана, чтобы разрешить агрессивную оптимизацию, например, режим передачи аргументов по умолчанию допускает либо нетерпеливую, либо ленивую оценку, в зависимости от того, что компилятор считает более быстрым.

Свяжитесь со мной по skaller у пользователей dot sourceforge dot net.

...