Управление памятью.

Глава 5. Регистр PDBR.

        Для того, чтобы процессор мог использовать страничное преобразование, ему необходимо указать адрес начала каталога страниц (дальше он "разберётся" сам). Этот адрес хранится в регистре PDBR (Page Directory Base Register - регистр базы каталога страниц). Функцию этого регистра выполняет регистр управления CR3, т.е. PDBR - это синоним CR3.
        Т.к. каталог страниц должен быть выравнен на границу 4Кб, его адрес будет содержать нули в младших 12 разрядах, а 20 старших, следовательно, будут нести информацию. Эти 20 разрядов и хранятся в регистре CR3. Оставшиеся 12 бит в CR3 зарезервированы, за исключением двух битов:
  •  
  • бит 3 - PWT (Write-Thorough) - сквозная запись,
  •  
  • бит 4 - PCD (Cache Control) - контроль кэширования.

            Эти биты будут рассматриваться в разделе "Управление кэшами", а пока мы не будем их использовать - они, вместе со всеми остальными 12-ю зарезервированными битами в CR3 будут устанавливаться в 0.
            Формат CR3 приведен на рис. 5-1:



    Рисунок 5-1. Формат регистра CR3 (PDBR).

            Для того, чтобы загрузить значение в CR3, можно использовать только команду MOV (как и для всех регистров управления). Т.к. регистры управления - 32-разрядные, то вторым операндом команды MOV должен быть 32-разрядный регистр общего назначения (как правило, это EAX).
            Например, установку PDBR можно произвести так:

    ; Значение адреса должно быть выравнено на границу 4Кб:
    
    	mov	eax,Page_Directory_PHysical_Address
    	mov	cr3,eax
    
    А так можно получить текущее значение PDBR:
    	mov	eax,cr3
    

    Следующая глава Оглавление Вопросы? Замечания? Пишите: sasm@narod.ru

      Copyright © Александр Семенко.
    TopList

    Hosted by uCoz