- •Классификация эвм, краткие характеристики суперЭвм, мейнфреймов и мини-эвм
- •Настольная вычислительная система.
- •Классификация процессоров.
- •Регистровая модель процессора x86.
- •Режимы работы процессора 80386.
- •1.Реальный режим
- •2. Защищенный режим
- •Процессор х86: непосредственная и регистровая адресация.
- •Процессор х86: прямая адресация и прямая со сдвигом.
- •Процессор х86: косвенная адресация и косвенная со сдвигом.
- •Процессор х86: регистровая адресация и регистровая с масштабированием.
- •Адресация с масштабированием
- •Размещение в памяти многомерных статических массивов и доступ к их элементам.
- •Размещение в памяти многомерных динамических массивов и доступ к их элементам.
- •Формирование исполнительного адреса из трех и четырех составляющих.
- •Процессор х86: инструкции копирования данных.
- •Процессор х86: инструкции ввода-вывода.
- •Представление целых чисел: прямой код, дополнительный код, bsd.
- •Процессор х86: инструкции сложения, сложения с переносом и сложение чисел в формате bcd.
- •Процессор х86: инструкции вычитания, вычитания с заемом и вычитание чисел в формате bcd.
- •Процессор х86: инструкции умножения.
- •Процессор х86: инструкция деления и операции расширения знакового бита.
- •Процессор х86: поразрядные логические инструкции, использование масок.
- •Процессор х86: инструкции сдвига. Умножение и деление на константы.
- •Процессор х86: инструкции цикла. Ожидание готовности пу с тайм-аутом.
- •Процессор х86: безусловный переход и виды меток.
- •Процессор х86: вызов процедуры; рамка стека функции в с.
- •Процессор х86: инструкции условного перехода.
- •Процессор х86: строковый примитив копирования данных.
- •Процессор х86: строковые примитивы сравнения данных, сканирования данных и заполнения данных.
- •Сегменты реального и защищенного режима. Глобальная и локальная таблицы дескрипторов.
- •Селектор сегмента. Механизм получения линейного адреса в защищенном режиме процессора x86.
- •Механизм преобразования линейного адреса в физический в процессоре x86.
- •Преимущества виртуального отображения страниц и адресное пространство процесса.
- •Формат дескриптора сегмента в процессорах x86. Прикладные сегменты.
- •Формат вентиля вызова и исключения. Область применения вентилей вызова.
- •Основные исключения защиты; обработка исключения отсутствие страницы в памяти.
- •Уровни привилегий и кольца защиты защищенного режима.
- •Аппаратная поддержка многозадачности, формат сегмента состояния задачи - tss.
- •Карта ввода/вывода. Прямой доступ к портам ввода/вывода в Windows и Linux.
- •Методы управления пу
- •Использование буферов при проведении обменов
- •Принципы, заложенные в подсистему управления вводом-выводом в ос unix
- •Система управления данными (файловая система)
- •Логическая организация файлов
- •1. Последовательная организация.
- •2. Библиотечная организация.
- •Физическая организация файлов
- •1. Распределение при помощи цепочек блоков.
- •2. Распределение при помощи цепочек индексов
- •Дескриптор файла (дф)
- •Матрица управления доступом (МтУд)
- •Управление доступом в зависимости от класса пользователей
- •Копирование и восстановление информации
- •Свопинг и пейджинг
- •2. Стратегии подкачки страниц
- •3. Стратегии размещения
Процессор х86: прямая адресация и прямая со сдвигом.
Прямая адресация
При прямой адресации задается адрес операнда. Адрес операнда можно указывать в виде числовой константы или идентификатора переменной. Исполнительный адрес при этом помещается в текст программы. Использование числовых констант в качестве адресов практикуется только в реальном режиме, когда прикладной программе необходим доступ к системным областям памяти, расположенным в фиксированных адресах, например, области данных BIOS. В защищенном режиме такое просто невозможно. Во встроенном ассемблере к прямой адресации приводит обращение к глобальным переменным. Обращение к локальным переменным, несмотря на то, что внешне выглядит точно также, приводит к адресации по базе со сдвигом, так как они располагаются в стеке и доступ к ним осуществляется через регистр указатель базы EBP.
Пример прямой адресации:
int a;
short b;
char c;
……….
MOV ECX, a
MOV b, AX
MOV BL, c
MOV EDX, [0x250A12CD]
MOV EDI, SS:[0x00010A08]
Адресация со сдвигом (смещением)
Адресация со сдвигом может использоваться совместно с прямой и косвенной, т.е. может быть прямая адресация со сдвигом и адресация по базе со сдвигом. Сдвиг задается в виде числовой константы или константного выражения, может быть как положительным, так и отрицательным, и определяет смещение операнда относительно базового адреса. Адресация со сдвигом используется для доступа к полям структур, отдельным байтам или словам больших объектов, а также к локальным переменным и параметрам функций. В последнем случае, как уже упоминалось выше, адресация по базе со сдвигом внешне выглядит точно также, как прямая адресация.
Пример адресации со сдвигом:
int a;
struct S{
double x;
int i;
short j;
};
S s;
………
MOV EAX, s[8]
LEA EBX, s
MOV AX, [EBX][8+4]
LEA EDX, a
MOV CX, word ptr a[2]
MOV CL, byte ptr a[3]
Процессор х86: косвенная адресация и косвенная со сдвигом.
Адресация по базе (косвенная адресация)
Адресация по базе или косвенная адресация заключается в извлечении исполнительного адреса из регистра процессора. Если таким регистром является регистр EBP, то обращение производится к сегменту стека, во всех остальных случаях – к сегменту данных. Обычно косвенная адресация применяется при обращении к данным через указатели. При программировании на ассемблере часто используется операция загрузки исполнительного адреса LEA для последующего многократного обращения к объекту в памяти с использованием косвенной адресации.
Пример косвенной адресации:
int *pi, pj;
int a, b, m[100];
…….
pi=new int;
pj=&a;
…….
MOV EBX, pi
MOV ECX, pj
MOV EAX, [EBX]
MOV EDX, [ECX]
LEA EBX, b
MOV EAX, [EBX]
MOV EDI, 20*4
LEA EBX, m[EDI]
MOV EAX, [EBX]
Адресация со сдвигом (смещением)
Адресация со сдвигом может использоваться совместно с прямой и косвенной, т.е. может быть прямая адресация со сдвигом и адресация по базе со сдвигом. Сдвиг задается в виде числовой константы или константного выражения, может быть как положительным, так и отрицательным, и определяет смещение операнда относительно базового адреса. Адресация со сдвигом используется для доступа к полям структур, отдельным байтам или словам больших объектов, а также к локальным переменным и параметрам функций. В последнем случае, как уже упоминалось выше, адресация по базе со сдвигом внешне выглядит точно также, как прямая адресация.
Пример адресации со сдвигом:
int a;
struct S{
double x;
int i;
short j;
};
S s;
………
MOV EAX, s[8]
LEA EBX, s
MOV AX, [EBX][8+4]
LEA EDX, a
MOV CX, word ptr a[2]
MOV CL, byte ptr a[3]