Бакалавриат
2024/2025
Архитектура ЭВМ и язык ассемблера
Статус:
Курс по выбору (Программная инженерия)
Направление:
09.03.04. Программная инженерия
Где читается:
Факультет компьютерных наук
Когда читается:
1-й курс, 4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
3
Программа дисциплины
Аннотация
Дисциплина направлена на изучение студентами базовых принципов устройства современных ЭВМ на примере архитектуры x86, включая анализ характеристик различных компонент ЭВМ и того, как эти характеристики влияют на работу системных и прикладных программ. Закрепление знаний достигается посредством практического освоения языка Си++, языка ассемблера архитектуры x86, типовых механизмов реализации языка Си/Си++ и его системы программирования на платформе Linux x86.
Цель освоения дисциплины
- Формирование у студентов связного представления об организации современных вычислительных систем, понимания взаимосвязей между архитектурными решениями уровней аппаратуры ЭВМ, системного и прикладного программного обеспечения, понимания факторов, влияющих на качественные и количественные характеристики ЭВМ, производительность и безопасность всей вычислительной системы в целом.
Планируемые результаты обучения
- Знать основные принципы устройства ЭВМ, его основные компоненты, их качественные и количественные характеристики.
- Знать свойства аппаратуры, влияющие на производительность и безопасность работы программ. Особенности двоичного (бинарного) интерфейса приложений на примере архитектуры IA-32.
- Знать особенности архитектуры x86, влияние архитектуры набора команд на реализацию языков высокого уровня и систему программирования.
- Знать язык ассемблера архитектуры x86, особенности реализации различных конструкций языка Си/Си++ на уровне языка ассемблера и причины, влияющие на выбор механизма реализации.
- Уметь составлять и отлаживать многомодульные программы на языках Си/Си++ и ассемблера; реализовывать интерфейсы между модулями, реализованными на разных языках программирования (Си/Си++и ассемблер).
- Уметь обосновано выбирать механизмы реализации конструкций языка Си/Си++ и корректно их кодировать на языке ассемблера архитектуры x86.
- Уметь оценивать производительность программ на языках Си/Си++ и ассемблера, используя знания об особенностях устройства аппаратуры ЭВМ и аппаратные средства профилирования архитектуры x86.
- Уметь восстанавливать по ассемблерному коду операторы и типы данных языка Си/Си++.
- Владеть современной технологией разработки и отладки многомодульных программ на языках Си/Си++ и ассемблера.
Содержание учебной дисциплины
- Введение в основы Си++. Классы и структуры. Шаблоны. Наследование. Исключения. Управление память. Семантика перемещения. Умные указатели. Контейнеры и итераторы. Вывод типов, лямбда-выражения. Метапрограммирование.
- Введение в архитектуру ЭВМ на примерах ассемблерных программ. Взаимосвязь языка Си/Си++, языка ассемблера и особенностей архитектуры ЭВМ на примере архитектуры x86.
- Система программирования языка Си/Си++ и ее связь с архитектурой ЭВМ.
- Архитектура ЭВМ в разных аспектах: физической организации, поддержки системных и прикладных программ.
Элементы контроля
- Экзамен
- Контрольные работыДве контрольные работы в 4-м модуле
- Домашнее заданиеВ течение Модуля 3 студентам предлагается выполнить четыре блока контеста (домашних задания, представляющих собой набор из 3-7 задач каждый). Финальная оценка за элемент контроля выставляется по формуле: round(x / 20), где x – количество заработанных студентом первичных баллов, а round – функция математического округления до ближайшего целого. В случае “половинного балла” оценка округляется вниз: например, 7.5 округлится до 7.
Промежуточная аттестация
- 2024/2025 4th moduleЭкзамен является блокирующим. Для получения положительной оценки нужно набрать не менее 40% баллов. Если за экзамен получено менее 40% баллов, то оценка за элемент контроля - процент набранных за экзамен баллов, поделенный на 10 и округленный вниз до ближайшего целого (от 30% баллов -- оценка 3, менее 30% и не менее 20% баллов -- оценка 2 и проч). Если за экзамен получено не менее 40% баллов, то оценка рассчитывается с учетом накопительной части всех элементов контроля как: 0.3 * экзамен + 0.1 * ДЗ№1 + 0.1 * ДЗ№2 + 0.1 * ДЗ№3 + 0.1 * ДЗ№4 + 0.15 * контрольная работа №1 + 0.15 * контрольная работа №2.
Список литературы
Рекомендуемая основная литература
- Алгоритмы: построение и анализ : пер.с англ., Кормен, Т., 2013
- Архитектура компьютера, Таненбаум, Э., 2014
- Язык Ассемблера для процессоров Intel, Ирвин, Кип Р., 2005
- Язык программирования С++ : специальное издание, Страуструп, Б., 2015
- Язык программирования С++, Страуструп, Б., 2007
Рекомендуемая дополнительная литература
- Computer architecture : a quantitative approach, Hennessy, J. L., 2019