Я не могу найти записи в таблице страниц/каталоге страниц для адреса 0xB8000. Он работает правильно, и когда я помещаю некоторые символы в эту область памяти, дисплей показывает это.
Я нахожусь в защищенном режиме, и пейджинг включен. Я использую бокс.
cr0 равен 0xe0000011 или 1110 0000 0000 0000 0000 0000 0001 0001b, cr3 равен 0x1000
0xB8000 равно 1011 1000 0000 0000 0000b, поэтому 10111000b — это индекс таблицы страниц, он равен 184, индекс каталога страниц равен 0, смещение равно нулю.
Я перехожу к 0x1000 физической памяти и получаю первый (индекс 0) элемент:
Это 0x2027 или 10 0000 0010 0111b, поэтому физический адрес таблицы страниц 10b или 2. Мне нужно содержимое 184-й записи, поэтому мне нужно перейти к 184 * 4 + 2 = 738 = 0x2E2, но он пуст:
Кстати, у меня есть три дескриптора памяти (память от 0x0 до 0xFFFFFFFF):
null:
0
code:
dw 0FFFFh ; limit low
dw 0 ; base low
db 0 ; base middle
db 10011010b ; access
db 11001111b ; granularity
db 0 ; base high
data:
dw 0FFFFh ; limit low (Same as code)
dw 0 ; base low
db 0 ; base middle
db 10010010b ; access
db 11001111b ; granularity
db 0 ; base high