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

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

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

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

План лекций

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

  1. «ЭВМ вообще»
    • Калькулятор → хранение команд → хранение данных → атрибуция данных → подготовка и вывод результатов → выполнение команд в зависимости от данных → ЭВМ
      • Адресация и переходы как частные случаи
    • ⇒ Архитектура фон Неймана
    • исполнитель, память, В/В, коммутатор
  2. Данные в памяти и введение в ММ3
  3. ММ3 условия и циклы
  4. ММ2, ММ1, рассказ о ММ0
  5. ММР (она же с модификацией адреса и переменным размером команды). Проблема подпрограмм всё ещё не решена
  6. Понятие ассемблера. /!\ На чем ассамблер? На ММР??

  7. SPIM, базовые сведения о работе программы, программа сложения двух чисел
  8. SPIM — общая архитектура, цикл работы процессора, базовые сведения о системе команд и работе программы
  9. Адресация, индексация, SPIM: работа с байтами
  10. Шина. Взаимодействие процессор-память; RAM, ROM, Reg; Гарвард/Принстон; 100 циклов для одного обращения к памяти
  11. Структура памяти (text/data/stack), понятие о конвенциях. Стек
  12. Подпрограммы и связанные с ними конвенции
  13. Фреймы, локальные переменные, рекурсия, ещё конвенции
  14. FPU
  15. Взаимодействие с ОС, введение
  16. I/O: порты, MMIO, SPIM: виды внешних устройств
  17. Прерывания В/В
  18. Программные прерывания

Ещё не вошло из того, что нужно рассказать и можно (?) показать на SPIM:

Из того, что показать нельзя (?)