Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорные системы.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
905 Кб
Скачать
☆

Страничное преобразование адреса

7.03.2013

В защищенном режиме поддерживается страничное преобразование адреса, связанное с поддержкой механизма, называемого виртуальной памятью, обеспечивающего предоставление памяти задачам гораздо большего объема, чем имеется физической памяти. Аппаратно страничное преобразование поддерживается страничное устройство MMU. В результате страничного преобразования линейный адрес преобразуется к физическому адресу памяти.

При страничном преобразовании используется базовый объект памяти, называемый страницей. Ее размер фиксирован и равен 4 килобайтам. Все адресное пространство сегмента разбивается на 1 мегабайт виртуальных страниц. Вся физическая память разбивается на 4-килобайтные страничные кадры. Любая виртуальная страница может быть загружена в любой страничный кадр. Как правило, объем физической памяти всегда меньше, чем виртуальная страница, поэтому отсутствующие в памяти физические страницы находятся на внешних запоминающих устройствах.

Для поддержки страничного преобразования используются:

  1. Регистр cl3, старшие 20 бит которого называются регистром каталога страниц pdbr. Это единственный физический адрес, который находится в защищенном режиме.

Каталог страниц представляет собой страницу, состоящую из 1024, 32-разрядных дескрипторов, называемых PDE. Каждый из элементов PDE адресует подчиненную таблицу страниц (2 уровня). Каждая таблица страниц содержит 1024 32-разрядных дескрипторов, каждый из которых содержит адрес страничного кадра. Этот дескриптор называется PTE. Каждый элемент PDE и PTE имеет одинаковую структуру.

Адрес ск

D

A

PCD

PWT

RW

P

P – бит присутствия, отображена ли страница на страничный кадр

RW – чтение-запись, позволяет защитить страницы уровня пользователя от обращения супервизоров

U/S – системная либо пользовательская таблица

PWT – бит сквозной записи. Указывает разрешена ли сквозная запись в страницу

PCD – запрещение хеширования страниц

А – бит доступа. Используется системой для подсчета частоты обращений страниц

D – устанавливается в 1, когда страница модифицирована.

Для преобразования линейного адреса в физический, сам линейный адрес разбивается на 3 части:

31 21 11 0

смещение

В процессе виртуального смещения страница должна быть заменена страничным кадром. Старшие 10 бит линейного адреса индексируют. Один из элементов PDE в каталоге страниц средние 10 бит линейного адреса индексируют элемент PTE в соответствующие таблицы страниц 2 уровня. Найденный адрес страничного кадра замещает старшие 20 бит линейного адреса и получается физический адрес памяти.

Логические операции

14.03.13

21.03.13

CMP а, с- сравнение.

Логические поддерживают 4 логические команды:

1. унарная команда – отрицание NOT ор. Инвертирует.

2. AND а, с – побитовая конъюнкция. Меняется значение источника. Биты сравниваются соответственно.

3. OR а, с – побитовая дизъюнкция.

4. XOR – исключающая дизъюнкция. Может использоваться для инвертирования битов, а также часто используется для обнуления регистров.

5. TEST – действия аналогично команде AND за исключением, не изменяет значения операндов, воздействует на флаги SF, ZF, PF.

Команды управления потоком

Различают три разновидности перехода:

1. short – короткий переход. Позволяет формировать однобайтный код программы. Возможна передача управления на +- 127 байт. По умолчанию переход является ближним.

2. Near jmp m

Означает, что метка находится в переделах текущего кодового сегмента. Формируется двухбайтных объектный код.

3. дальний переход – Far. Метка находится в другом кодовом сегменте.

Команды условных переходов

Перед их выполнение используют команды сравнения. Все команды являются ближними.

J[condition] m

Ja

Jb

Команда циклов

Loop m – безусловный цикл. Передает управление при ненулевом значении регистра счетчика. При выполнении команды выполняет декремент регистра счетчика. Может использоваться команда. Также работают только при ненулевом положении счетсика. Loope/loopz – если счетчик не = 0 и zf=1. Loopne/loopnz – если счетчик не = 0 и zf=0.

Команды сканирования битов

04.04.13

Bsf d,s – от младшего бита к старшему

Bsr d,s – от старшего к младшему

S – операнд, в котором размещается значение сканируемых битов. Может находиться как в регистре, так и в памяти. Не может быть однобайтным.

D – приемник, как правило, регистр, куда заносится номер по порядку, т.е. позиция, определяющая порядковый номер первого единичного бита в сканируемом операнде.

Zf – 0 – если найден единичный бит, 1 – если не найден. Состояние остальных флагов неопределенно.

Команды тестирования битов

Bt s,n

Bts s,n – устанавливает указанный бит в 1.

Btr s,n – сбрасывает указанный бит в 0.

Btc s,n – осуществляет конвертирование указанного бита.

Все команды заносят во флаг cf значение бита из операнда-источника, номер которого указан вторым операндом n. в качестве источника может быть использован регистр, либо ячейка памяти (не может быть байтом). В качестве второго операнда регистр либо непосредственное значение.

Команды сдвигов

Назначение команд сдвигов заключается в перемещении содержимого операнда в сторону младших (вправо) либо старших (влево) битов. Различают арифметические и логические сдвиги.

Логические сдвиги –

Shl s,c - влево

Shr s,c – вправо

Осуществляет сдвиг всех битов операнда-источника влево либо вправо. Сдвиг происходит на количество позиций указанных вторым операндом. При этом последний сдвинутый бит дублируется во флаге cf. Количество сдвигов может быть задано либо непосредственным значением, либо регистром-счетчиком cl. Максимальное значение на которое можно сдвинуть 2-слово – 31 бит. Недостающие биты заполняются 0.

Арифметический сдвиг –

Sal s,c – идентичен логическому сдвигу влево

Sar s,c – все биты сдвигаются вправо, однако знаковый бит сдвигаемого операнда дублируется.

Сдвиги с двойной точностью

Shld d,s,c – все биты приемника сдвигаются в сторону старших адресов, при этом младшие биты заполняются последовательно битами вытесняемыми из операнда-источника, результат запоминается в операнде назначения. Cf – значение последнего сдвинутого бита. 3 операнд задает количество сдвигаемых битов cl или непосредственное значение.

Shrd d,s,c

Команды циклических сдвигов

Rol d,c

Ror d,c

Циклические сдвиги через флаг переноса

Rсl d,c

Rсr d,c

При выполнении сдвига флаг cf выступает как продолжение операнда-приемника.

Команда управления потоком

Call name

Осуществляет обращение к процедуре, имя которой задается меткой указанной в качестве операнда. Различают ближний (по ум.) и дальний вызовы (перед именем нужно указать far).

При ближнем вызове в стек программы помещается адрес смещения команды, которая стоит следом за командой call (адрес возврата). В регистр ip/eip указатель команд помещается значение адреса смещения, определяемое именем процедуры, т.е. фактически адрес первой команды процедуры. Команда ret предназначена для возврата из процедуры по ее окончанию. Возврат выполняется следующим образом: из вершины стека извлекается значение, которое процессор считает, что это адрес возврата и помещается в ip/eip. Следующей командой будет выполнена далее идущая команда.

При выполнении дальнего вызова процедуры, т.е. в другой кодовый сегмент, в стек программы помещается адрес кодового сегмента cs, ip/eip.