Языки программирования низкого уровня

Цели и задачи дисциплины
сформировать у студентов глубокое понимание того, как высокоуровневый код на языке C превращается в машинные инструкции x86-64, и научить сознательно управлять производительностью, размером кода и поведением программы на уровне регистров, памяти и процессорного конвейера. Задачи дисциплины - научить читать, анализировать и писать код на ассемблере x86-64 (NASM, Intel-синтаксис); - показать реальное устройство и ограничения современной процессорной архитектуры AMD64 (регистры, память, кэши, конвейер, предсказание переходов, векторные инструкции); - освоить соглашение о вызовах System V AMD64 ABI и правила безопасной интеграции ассемблера с языком C; - научить измерять и объективно сравнивать производительность кода (RDTSC, clock_gettime, perf); - сформировать практические навыки ручной оптимизации критических участков кода с достижением ускорения в разы по сравнению с оптимизирующим компилятором; - развить системное мышление: понимание компромиссов между скоростью, размером кода, читаемостью и портируемостью.
Краткое содержание дисциплины
Роль ассемблера в современном программировании. Области применения. Обзор места ассемблера в экосистеме современного программного обеспечения. Инструменты разработки. Знакомство с toolchain для ассемблера. Установка и настройка NASM (ассемблер). Команды арифметики и логики Разбор арифметических и логических команд , сдвигов, битовых операций. Управление потоком выполнения: условные переходы, циклы. Режимы работы процессора (на примере x86/x86-64) и Модели памяти в контексте ассемблера (и архитектуры x86/x86-64). Работа с массивами, строками, структурами. Режимы адресации, работа с памятью. Обработка массивов. Подпрограммы и соглашение о вызовах. Передача параметров. Интеграция ассемблера с C++. Базовые приёмы оптимизации.
Компетенции обучающегося, формируемые в результате освоения дисциплины
Выпускник должен обладать:
  • ПК-11 Способен разрабатывать, оптимизировать и отлаживать системное программное обеспечение
  • ПК-12 Способен оптимизировать производительность программного обеспечения
Вы нашли ошибку в тексте:
Просто нажмите кнопку «Сообщить об ошибке» — этого достаточно. Также вы можете добавить комментарий.