Использование кэша процессора в качестве RAM обычно реализуется как часть кода блока начальной загрузки. Это позволяет решить проблему отсутствия RAM для использования под стек в начале выполнения кода BIOS. Возможность эта не особенно широко распространена и поддерживается только современными процессорами и BIOS, такими как Award BIOS для материнских плат AMD64. В листинге 4.6 показан дизассемблированный код блока начальной загрузки BIOS материнской платы Gigabyte K8N SLI как пример реализации применения кэша процессора в качестве RAM. Данная BIOS была выпущена 13 марта 2006 года.
К°Д> приведенный в листинге 4.6, не требует дополнительных объяснений. Наиболее важная функция реализуется инструкцией Rep lodsd По адресу 0646. Здесь 16 Кбайт данных записываются потоком в кэш, обновляя его содержимое и заставляя кэш указывать на диапазон адресов, назначенный для использования в качестве RAM. Инструкцией Mov По а4ресу Fooo : 0665 Код устанавливает стек по предопределенному адресу кэша, используемого как RAM. Таким образом, эта область кэша выделяется для использования под стек. Именно таким образом эта область будет использоваться последующим кодом блока начальной загрузки. Материалы, представленные в Главе 2, дают всю информацию, необходимую для того, чтобы начать эффективную работу с IDA Pro. Предыдущий раздел данной главы содержит основную информацию о двоичной организации BIOS. Теперь я опишу основные этапы осуществления дизассемблирования BIOS с применением этих знаний.
Рубрика: Женский интерес