3712
Комментарий:
|
← Версия 20 от 2015-12-29 11:37:54 ⇥
6787
|
Удаления помечены так. | Добавления помечены так. |
Строка 9: | Строка 9: |
##Include(^ArchitectureAssembler/[0-9].*, , titlesonly)>> | [[/FullPages|Сводный развёрнутый план]] по всем темам. |
Строка 15: | Строка 15: |
1. [[/05_IndirectAddressing|ММР (она же с модификацией адреса и переменным размером команды)]] | 1. [[/05_IndirectAddressing|ММР (с модификацией адреса и переменным размером команды)]] |
Строка 18: | Строка 18: |
1. SPIM — общая архитектура (схема), цикл работы процессора (понятие о микрокомандах), базовые сведения о системе команд и работе программы 1. Адресация, индексация, SPIM: работа с байтами. Секции .text и .data 1. Шина. Взаимодействие процессор-память; RAM, ROM, Reg; Гарвард/Принстон; 100 циклов для одного обращения к памяти 1. Структура памяти, псевдоинструкции, макросы, понятие о конвенциях (именование и использование регистров). 1. Стек (+.stack). Подпрограммы и связанные с ними конвенции 1. Фреймы, локальные переменные, рекурсия, ещё конвенции 1. Взаимодействие с ОС, введение 1. FPU 1. Исключения (FPU, арифм., переполнения) syscall. Обработчики исключений. Проблема исключения посреди инструкции. Роль ОС в обработке. 1. I/O: порты, MMIO, SPIM: виды внешних устройств 1. Прерывания В/В, DMA 1. КЕШ 1. Конвейер. 1. Многозадачность 1. Многопроцессорные системы 1. Виртуализация. |
1. [[/08_MIPS_Arcitecture|MIPS — архитектура и система команд]] (схема), цикл работы процессора (понятие о микрокомандах), базовые сведения о системе команд и работе программы 1. [[/09_Addressing|Адресация]] индексация, SPIM: работа с байтами. Секции .text и .data; выравнивание '''TODO''' добавить "структуры", распилить и половину переместить ближе к концу 1. [[/10_BusMemory|Взаимодействие процессор-память]] Шина. Взаимодействие процессор-память; RAM, ROM, Reg; Гарвард/Принстон; 100 циклов для одного обращения к памяти 1. [[/11_ConventionsIntro|Конвенции, псевдоинструкции и макросы]] Структура памяти, псевдоинструкции, макросы, понятие о конвенциях (именование и использование регистров). 1. [[/12_StackSubroutines|Стек и подпрограммы]] Стек (+.stack). Подпрограммы и связанные с ними конвенции 1. [[/13_FramesLocals|Фреймы, локальные переменные, рекурсия]] Фреймы, локальные переменные, рекурсия, ещё конвенции 1. [[/14_OS_Interaction|Взаимодействие с ОС]] 1. [[/15_FPU_Coprocessors|Понятие о сопроцессорах. FPU]] 1. [[/16_ExceptionsSyscalls|Исключения и системные вызовы]] Исключения (FPU, арифм., переполнения) syscall. Обработчики исключений. Проблема исключения посреди инструкции. Роль ОС в обработке. 1. [[/17_DeviceIO|Внешние устройства и ввод/вывод]] I/O: порты, MMIO, SPIM: виды внешних устройств 1. [[/18_InterruptsDMA|Прерывания и DMA]] 1. [[/19_Cache|Кеш]] 1. [[/20_Pipeline|Конвейер]] 1. [[/21_Multitasking|Многозадачность]] 1. [[/22_Multicore|Многопроцессорные системы]] 1. [[/23_Virtualization|Виртуализация]] 1. [[/24_ArchitectureOverall|Обзор архитектур современных ЭВМ]] 1. [[/25_IntroC|Другие ассемблеры, Язык программирования Си как макроассемблер]] 1. [[/26_AddressingC|Адресная арифметика и ссылки в Си]] 1. [[/27_FunctionsC|Вызов функции и локальные переменные в Си]] 1. [[/28_PreprocessorC|Препроцессор языка Си, вычисления периода компиляции]] 1. [[/29_LinkingAndLibrary|Понятие компоновки и конвенций относительно загружаемых форматов]] |
Строка 35: | Строка 51: |
Ещё не вошло из того, что нужно рассказать и можно (?) показать на SPIM: * Супервизор, * Виртуальная память, * Конвейер, * Кеш, Из того, что показать нельзя (?) * SMP * Суперскалярность * ??? |
Ещё темы * Раздельная компиляция, компоновка, библиотеки * Переменные и выражения периода компиляции, препроцессор * Загружаемые форматы, другие ассемблеры и конвенции * Си как макроассемблер (2-4 лекции) == TODO == * MARS * подготовка конфигов и параметров командной строки для разных режимов работы * По лекциям/практикуму ('''какие режимы нужны?''') * для запуска в EJudge (см. ниже два варианта) * Ejudge * УМ — нужен ли? * Засунуть туда MARS * MARS — в/в из командной строки * MARS — организация в/в для программы вида «возьмите из памяти, положите в память» при помощи обмазывания дополнительным кодом, лежащим в нестандартных адресах и минимального преобразования исходного кода * QEMU * Windows? * Сеть как в Virtualbox (с пробросом портов для SSH) * Минимальный образ со всем необходимым * Методички (в первую очередь для виндовз) * Использование УМ* * Установка и использование MARS * Установка и использование QEMU с обмазкой * Доступ/передача файлов в QEMU из виндовз (WinSCP/PuTTY?) |
Архитектура ЭВМ и язык ассемблера
проект курса второго семестра
Концепция: это курс про архитектуру ЭВМ, ассемблер нужен только тогда, когда он иллюстрирует особенности архитектуры в частности и низкоуровнего программирования вообще.
Практика: первые несколько занятий проходят на базе эмуляторов учебных машин, остальные — на базе эмулятора MIPS (скорее всего, MARS, но возможно и SPIM).
План лекций
Сводный развёрнутый план по всем темам. Примерная разбивка по два часа. Возможно, некоторые темы толстоваты, тогда они занимают четыре
Эмулятор MIPS, базовые сведения об архитектуре и работе; простейшая программа
MIPS — архитектура и система команд
- (схема), цикл работы процессора (понятие о микрокомандах), базовые сведения о системе команд и работе программы
- индексация, SPIM: работа с байтами. Секции .text и .data; выравнивание
TODO добавить "структуры", распилить и половину переместить ближе к концу
- индексация, SPIM: работа с байтами. Секции .text и .data; выравнивание
Взаимодействие процессор-память
- Шина. Взаимодействие процессор-память; RAM, ROM, Reg; Гарвард/Принстон; 100 циклов для одного обращения к памяти
Конвенции, псевдоинструкции и макросы
- Структура памяти, псевдоинструкции, макросы, понятие о конвенциях (именование и использование регистров).
- Стек (+.stack). Подпрограммы и связанные с ними конвенции
Фреймы, локальные переменные, рекурсия
- Фреймы, локальные переменные, рекурсия, ещё конвенции
- Исключения (FPU, арифм., переполнения) syscall. Обработчики исключений. Проблема исключения посреди инструкции. Роль ОС в обработке.
Внешние устройства и ввод/вывод
- I/O: порты, MMIO, SPIM: виды внешних устройств
Другие ассемблеры, Язык программирования Си как макроассемблер
Понятие компоновки и конвенций относительно загружаемых форматов
Ещё темы
- Раздельная компиляция, компоновка, библиотеки
- Переменные и выражения периода компиляции, препроцессор
- Загружаемые форматы, другие ассемблеры и конвенции
- Си как макроассемблер (2-4 лекции)
TODO
- MARS
- подготовка конфигов и параметров командной строки для разных режимов работы
По лекциям/практикуму (какие режимы нужны?)
- для запуска в EJudge (см. ниже два варианта)
- подготовка конфигов и параметров командной строки для разных режимов работы
- Ejudge
- УМ — нужен ли?
- Засунуть туда MARS
- MARS — в/в из командной строки
- MARS — организация в/в для программы вида «возьмите из памяти, положите в память» при помощи обмазывания дополнительным кодом, лежащим в нестандартных адресах и минимального преобразования исходного кода
- QEMU
- Windows?
- Сеть как в Virtualbox (с пробросом портов для SSH)
- Минимальный образ со всем необходимым
- Методички (в первую очередь для виндовз)
- Использование УМ*
- Установка и использование MARS
- Установка и использование QEMU с обмазкой
- Доступ/передача файлов в QEMU из виндовз (WinSCP/PuTTY?)