i582 / system-software-course

Compiler course of the 4th semester.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Системное ПО

Такс, значит у нас тут компиляторы со всем с ними связанным. Немного полезных материалов:

Книги

  1. Компиляторы. Принципы, технологии и инструментарий (2018). А. Ахо ⭐
  2. Конструирование компиляторов (2015). С. Свердлов
  3. Проектирование и конструирование компиляторов (1984). Р. Хантер
  4. Теория формальных языков (2004). Пентус А.Е.
  5. Основы построения компиляторов (2007). Н. Смирнова, С. Тарасов ⭐
  6. Построение компиляторов (2010). Н. Вирт
  7. Введение в теорию автоматов, языков и вычислений (2008). Дж. Хопкрофт

Ассемблер

  1. Ассемблер для процессоров Intel Pentium. (2006). Ю.Магда ⭐

Все книги в папке books. Первая книга всеобъемлюща настолько, что хватит только ее, чтобы понять все что нужно :)

Видео

Мне очень нравится вот этот плейлист

  1. Тык ⭐

Ассемблер

  1. Основы Тык ⭐

Интервью с преподавателем :)

  1. Какие языки можно использовать для транспиляции?

    Желательно любой компилируемый язык. Можно сходит на википедию и выбрать любой: ссылка

  2. В какой ассемблер происходит транспиляция (точнее даже чем потом надо будет компилировать ассемблер)?

    Можно использовать masm (macro assembler), можно использовать любой другой, который интересно попробовать изучить.

    Т.е. вам придётся выучить и разобраться в двух языках программирования, исходном с которого будете транслировать программу и ассемблер.

    Ну и третий язык нужно уже знать достаточно хорошо, Си++ для написания работы.

  3. Какие программы нужно будет реализовать на языке (какие части языка нужно реализовать)?

    Решение квадратного уравнения; бинарная сортировка с рекурсией, решение системы уравнений, расчёт факториала.

    Реализация массивов не нужно, а вот разобраться как реализовать функцию (макро команду), скорее всего придётся.

    1. А как без массивов с сортировкой?

      Стэк, запись в память, в файл, ну либо если массивы нужны, то реализовывайте их.

  4. Нужно ли ходить на практики?

    Желательно. Как я буду контролировать ход выполнения вами курсовой? Она довольно сложная, без посещения вы будете откладывать её выполнение и в конце концов не успеете.

  5. И если ходить, то что показывать?

    Расскажу на практике.

  6. Нужно ли показывать промежуточные этапы проделанной работы?

    Да.

  7. Так же вот сейчас вопрос который интересует многих, можно ли взять С/С++?

    Нет.

  8. А как будет оцениваться работа?

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

    Ну и вы должна объяснить и понимать что происходит на каждом этапе и зачем.

Все делается с 0, без использования генераторов!

💡 Удачи со сдачей!

About

Compiler course of the 4th semester.

License:MIT License


Languages

Language:C++ 95.7%Language:CMake 4.3%