- •1. Вычислительный цикл процессора.
- •2. Вентили и логические элементы.
- •3. Понятие архитектуры и микроархитектуры. Классификация вычислительных средств по архитектуре (классификация Флинна).
- •4. Микропроцессор (мп). Состав и основные функции. Процессоры risc и cisc.
- •5. Архитектура ia-32. Режимы работы процессора.
- •6. Архитектура ia-32. Особенности представления информации.
- •7. Архитектура ia-32. Регистры общего назначения и сегментные регистры.
- •8. Архитектура ia-32. Регистры смещений и регистр флагов.
- •9. Архитектура ia-32. Организация памяти.
- •10. Архитектура ia-32. Организация прерываний.
- •11. Ассемблер. Области применения. Достоинства и недостатки.
- •12. Ассемблер. Структура программы. Модель памяти small.
- •13. Ассемблер. Основные типы предложений.
- •14. Ассемблер. Описание сегмента данных.
- •15. Ассемблер. Способы адресации памяти.
- •16. Ассемблер. Команды пересылки данных. Арифметические команды
- •17. Ассемблер. Команды переходов. Процедуры.
- •18. Ассемблер. Команды управления циклами. Команды прерывания.
- •19. Запоминающие устройства. Иерархичная организация памяти. Основные показатели быстродействия системы памяти.
- •20. Физические основы работы внутренней памяти. Энергозависимая память.
- •21. Внутренняя энергонезависимая память.
- •22. Аппаратно-программные методы ускорения обработки данных. Распараллеливание операции
- •23. Аппаратно-программные методы ускорения обработки данных. Кэширование памяти.
- •24. Кэш прямого отображения. Наборно-ассоциативный и ассоциативный кэш.
- •25. Микроархитектурные особенности процессоров x86 I-V поколений.
- •26. Микроархитектурные особенности процессоров x86 VI поколений.
- •27. Микроархитектура NetBurst и Intel Core.
- •28. Архитектура ia-64.
11. Ассемблер. Области применения. Достоинства и недостатки.
Ассемблер – это язык программирования низкого уровня. Представляет собой, символически-удобный аналог машинного языка.
Для перевода программы, написанной на ассемблере, в машинные коды существуют программы – трансляторы (компиляторы).
Достоинства:
1. Оптимальное использование средств процессора, использование меньшего количества команд и обращений в память, и как следствие — большая скорость и меньший размер программы
2. Использование расширеных наборов инструкций процессора (ММХ, SSE, SSE2, SSE3)
3. Доступ к портам ввода-вывода и особым регистрам процессора (в большинстве ОС эта возможность доступна только на уровне модулей ядра и драйверов)
4. Возможность использования самомодифицирующегося (в том числе перемещаемого) кода.
Недостатки:
1. Большие объемы кода, большое число дополнительных мелких задач, меньшее количество доступных для использования библиотек, по сравнению с языками высокого уровня
2. Трудоёмкость чтения и поиска ошибок (хотя здесь многое зависит от комментариев и стиля программирования)
3. Непереносимость на другие платформы, кроме архитектурно совместимых.
4. Более сложен для совместных проектов
Области применения:
-
Разработка программ, критичных к быстродействию (например, драйверов устройств).
-
Возможность просмотра и корректировки исполняемых программ (с расширениями, EXE и COM, например), при отсутствии их исходного кода.
12. Ассемблер. Структура программы. Модель памяти small.
13. Ассемблер. Основные типы предложений.
Программа на ассемблере представляет собой описание соответствующих сегментов памяти.
Ассемблер позволяет тонко настроить каждый сегмент (данных, кода, стека): указать тип выравнивания, комбинирования, размер (64 Кбайт в реальном режиме, или до 4 Гб в защищенном). Для некоторых типичных ситуаций приняты так называемые модели памяти, чтобы программист не настраивал их подробно в каждой программе. Подробную настройку следует проводить лишь в тех случаях, когда стандартные модели памяти не удовлетворяют. Мы будем использовать модель памяти SMALL, в которой код программы размещается в одном сегменте кода, а данные объединены в одну группу.
В этом случае структура ассемблерной программы имеет следующий вид:
MODEL SMALL
.DATA
--здесь описывается сегмент данных
.STACK
--здесь описывается сегмент стека
.CODE
MAIN PROC
--здесь представлен исходный код процедуры PROC
MAIN ENDP
ENDMAIN
Каждый сегмент состоит из предложений языка, каждое из которых занимает отдельную строку кода программы.
Предложения бывают следующих типов:
Команды (инструкции) – символические аналоги машинных команд. В процессе трансляции они преобразуются в машинные команды.
Формат команды
[метка [:]] КОП [Операнд] [,Операнд] [;Комментарий]
КОП – мнемокод команды (состоит из 2-6 букв). В 8088 133 кода, в 80386 – 240.
Операнд – в качестве него может быть явно заданный адрес (прямой или косвенный); имя метки, имя переменной, само значение переменной и т.п.
Количество необходимых операндов в данной команде, МП узнает по КОП.
Метка – имя команды ассемблера для ссылки к этой команде. Метка находится всегда в текущем сегменте памяти.
Директивы – некоторые указания транслятору.
Формат директивы:
[Идентификатр] КПОП [Операнд] [, Операнд] … [;Комментарий]
Идентификатор – имя директивы
КПОП – мнемокод директивы.
Операнды – различные опции директивы.
Особенности представления чисел:
Двоичные числа заканчиваются буквой B.
Десятичные числа без окончания, либо заканчивающиеся буквой D.
Шестнадцатеричные числа заканчиваются буквой H. Всегда должны начинаться с десятичной цифры, а не буквы!
Отрицательные десятичные числа записываются обычным образом
Двоичные и шестнадцатеричные числа записываются в дополнительном коде.
Строки символов представляет собой последовательность любых символов, заключенных в кавычки.
Модификаторы
В качестве операндов могут быть использованы модификаторы, которые определяют некоторые операции, которые выполняются при трансляции команды.
Арифметические: «+» «-«, «*», «/», mod и т.п. Формат: oprd mdf oprd
Логические: and, or, not, xor. Формат: oprd mdf oprd
Отношения: eq – совпадения, nq – несовпадения, it – меньше, gt- больше, le – меньше или равно, ge – больше или равно. Формат: oprd mdf oprd.
Функции: $ - счетчик адреса, возвращает смещение текущей команды относительно сегмента кода;
seg – возвращает сегмент (его адрес) операнда;
offset – возвращает смещение операнда;
length – возвращает длину операнда;
type – возвращает тип операнда (1 – если байт, 3 – dword)
size – возвращает произведение length*type операнда
Формат везде (кроме $) mdf oprnd
Присваивания атрибутов:
ptr – изменяет тип операнда. Формат: type ptr oprnd
ds: es: CS: SS: - изменяет адрес сегмента.
HIGH/LOW – возвращает старший/младший байт 16-битового операнда.