Различия между версиями 18 и 19
Версия 18 от 2015-12-26 19:35:27
Размер: 6149
Редактор: FrBrGeorge
Комментарий:
Версия 19 от 2015-12-27 22:52:32
Размер: 6758
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 44: Строка 44:
 1. [[/25_IntroC|Другие ассемблеры, Язык программирования Си как макроассемблер]]
 1. [[/26_AddressingC|Адресная арифметика и ссылки в Си]]
 1. [[/27_FunctionsC|Вызов функции и локальные переменные в Си]]
 1. [[/28_PreprocessorC|Препроцессор языка Си, вычисления периода компиляции]]
 1. [[/29_LinkingAndLibrary|Понятие компоновки и конвенций относительно загружаемых форматов]]
 

Архитектура ЭВМ и язык ассемблера

проект курса второго семестра

Концепция: это курс про архитектуру ЭВМ, ассемблер нужен только тогда, когда он иллюстрирует особенности архитектуры в частности и низкоуровнего программирования вообще.

Практика: первые несколько занятий проходят на базе эмуляторов учебных машин, остальные — на базе эмулятора MIPS (скорее всего, MARS, но возможно и SPIM).

План лекций

Примерная разбивка по два часа. Возможно, некоторые темы толстоваты, тогда они занимают четыре

  1. Представление об архитектуре ЭВМ

  2. Хранение данных и команд в памяти; ММ3

  3. ММ3 условия и циклы

  4. ММ2, ММ1, рассказ о ММ0

  5. ММР (с модификацией адреса и переменным размером команды)

  6. Ассемблер и язык ассемблера

  7. Эмулятор MIPS, базовые сведения об архитектуре и работе; простейшая программа

  8. MIPS — архитектура и система команд

    • (схема), цикл работы процессора (понятие о микрокомандах), базовые сведения о системе команд и работе программы
  9. Адресация

    • индексация, SPIM: работа с байтами. Секции .text и .data; выравнивание
      • TODO добавить "структуры", распилить и половину переместить ближе к концу

  10. Взаимодействие процессор-память

    • Шина. Взаимодействие процессор-память; RAM, ROM, Reg; Гарвард/Принстон; 100 циклов для одного обращения к памяти
  11. Конвенции, псевдоинструкции и макросы

    • Структура памяти, псевдоинструкции, макросы, понятие о конвенциях (именование и использование регистров).
  12. Стек и подпрограммы

    • Стек (+.stack). Подпрограммы и связанные с ними конвенции
  13. Фреймы, локальные переменные, рекурсия

    • Фреймы, локальные переменные, рекурсия, ещё конвенции
  14. Взаимодействие с ОС

  15. Понятие о сопроцессорах. FPU

  16. Исключения и системные вызовы

    • Исключения (FPU, арифм., переполнения) syscall. Обработчики исключений. Проблема исключения посреди инструкции. Роль ОС в обработке.
  17. Внешние устройства и ввод/вывод

    • I/O: порты, MMIO, SPIM: виды внешних устройств
  18. Прерывания и DMA

  19. Кеш

  20. Конвейер

  21. Многозадачность

  22. Многопроцессорные системы

  23. Виртуализация

  24. Обзор архитектур современных ЭВМ

  25. Другие ассемблеры, Язык программирования Си как макроассемблер

  26. Адресная арифметика и ссылки в Си

  27. Вызов функции и локальные переменные в Си

  28. Препроцессор языка Си, вычисления периода компиляции

  29. Понятие компоновки и конвенций относительно загружаемых форматов

Ещё темы

  • Раздельная компиляция, компоновка, библиотеки
  • Переменные и выражения периода компиляции, препроцессор
  • Загружаемые форматы, другие ассемблеры и конвенции
  • Си как макроассемблер (2-4 лекции)

TODO

  • MARS
    • подготовка конфигов и параметров командной строки для разных режимов работы
      • По лекциям/практикуму (какие режимы нужны?)

      • для запуска в EJudge (см. ниже два варианта)
  • Ejudge
    • УМ — нужен ли?
    • Засунуть туда MARS
    • MARS — в/в из командной строки
    • MARS — организация в/в для программы вида «возьмите из памяти, положите в память» при помощи обмазывания дополнительным кодом, лежащим в нестандартных адресах и минимального преобразования исходного кода
  • QEMU
    • Windows?
    • Сеть как в Virtualbox (с пробросом портов для SSH)
    • Минимальный образ со всем необходимым
  • Методички (в первую очередь для виндовз)
    • Использование УМ*
    • Установка и использование MARS
    • Установка и использование QEMU с обмазкой
    • Доступ/передача файлов в QEMU из виндовз (WinSCP/PuTTY?)

ArchitectureAssembler (последним исправлял пользователь FrBrGeorge 2015-12-29 11:37:54)