====== Системное программное обеспечение (СПО) ====== Данная страница предназначена для организации курса "Системное программное обеспечение (СПО)" для групп АСУ (ИРНИТУ), ИрГУПС Лабы сдавать в свою телеграм-группу в виде ссылки на **единый** проект всех лабораторных работ на 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 Пароль здесь не публикую по понятным причинам.