====== Системное программное обеспечение (СПО) ======
Данная страница предназначена для организации курса "Системное программное обеспечение (СПО)" для групп АСУ (ИРНИТУ), ИрГУПС
Лабы сдавать в свою телеграм-группу в виде ссылки на **единый** проект всех лабораторных работ на github или ему подобный сервис. Лабы можно делать в любом порядке, можно в виде единого проекта (**по согласованию с преподавателем**).
Слайды курса OCW.MIT.EDU [[https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/projects/|Computer Language Engineering]]! Все сразу в одном [[https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-035-computer-language-engineering-spring-2010/download-course-materials/|файле]].
===== Лабораторные по СПО =====
- Исследование компилятора gcc, язык ассемблера. Связь процесса и операционной системы. Makefile, git.
* Нужно написать программу на С, С++, PASCAL/FPC и др. компилируемом языке, странслировать его в Assembler с разными опциями оптимизации gcc -S -o <>.s <>.c -O[0123s]
* Разобраться с одним из вариантов [оптимизации] ассемблерной программой (**добавить комментарии в сгенерированный ассемберный код**) - найти циклы, переменные и т.п.
- Программу усовершенствовать: добавить параллельный процесс средствами Linux/Windows. Синхронизация доступа к общему ресурсу (файл, канал, pipe, очередь, mmap, smmem). Язык С или другой, но на С проще, есть куча примеров.
- Конечный детерминированный автомат, распознающий регулярное выражение. Реализация автомата на языке программирования и/или при помощи [[https://habr.com/ru/post/521996/|flex]] или antlr4. Лучше запрограммировать два варианта (ничего сложного там нет):
* Программу на любимом языке программирования;
* Программу на flex + С или на подобной связке.
- Реализация контекстно-свободной грамматики (оператора языка). Тут как душа пожелает [[https://www.usna.edu/Users/cs/roche/courses/f18si413/lab/04/|flex+bison]], [[https://outofrange.ru/2015/06/antlr4-for-preprocessing/|antlr4]], ....
- Реализация генератор кода - текст на языке ассемблера или, что круче, на [[https://llvm.org|llvm]] ([[https://llvmlite.readthedocs.io/en/latest/|llvmlite/Python]], и т.п.).
Оценка = количество сданных лаб, минимум 4 (1234, тройки мне нужны). 😉
Кому трудно - делайте вдвоем.
Для 4 и 5 лабораторных можно дописать мой компилятор oberon7 (на стадии обновления исходников). https://github.com/stud-labs/oberon7-cpp, например, реализовать операции и тип bool, cardinal, В конце readme есть примеры задач.
=== Доступ к Виртуальной машине ===
Из командной строки (powershell) Windows 8.0-11.0 в ИГУ или моей сети VPN.
ssh stud@imp.isclan.ru
Пароль здесь не публикую по понятным причинам.