Если я хочу получить доступ к текстовому буферу VGA в X86, который находится по адресу 0xb8000:
uint16_t *VGA_buffer = (uint16_t*)0xb8000;
Затем я индексирую переменную VGA_buffer
как обычный массив, т.е. VGA_buffer[0]
, VGA_buffer[1]
и т.д.
Тем не менее, я читал о карте памяти в x86, там перечислены физические адреса.
Мой вопрос:
Как процессор получает доступ к этому адресу? Знает ли CPU, что любой адрес, явно указанный в коде, является физическим адресом и не должен проходить через механизмы преобразования адресов (логический адрес → виртуальный адрес → на физический адрес)?
Спасибо заранее.