Частина 26 - Основи сектора завантаження [Part 9]
Для повного змісту змісту всіх уроків, будь ласка, натисніть нижче, оскільки це надасть вам короткий зміст кожного уроку, а також теми, які будуть розглянуті. https://github.com/mytechnotalent/Reverse-Engineering-Tutorial
Перед тим, як зануритися в x64 збірку, я хочу дуже швидко розповісти про те, що ми називаємо довгим режимом.
Під час завантаження комп'ютеру потрібно включити, що ми називаємо A-20 лінією. У ранніх архітектурах процесори мали 20 адресних ліній, які були A-0 до A-19, які могли доступитися до 2 до 20 байтів інформації. Лінія A-20 є зовнішнім посиланням на пам'ять, що містить 16-бітовий зміщення адреси, доданий до 16-бітового сегментного числа, яке зміщує 4 біти, щоб отримати додатковий доступ.
Цей процес в поєднанні з таблицею глобальних дескрипторів дозволяє вам працювати зі своїм реєстром керування, щоб виконати віддалений стрибок для входу в захищений режим, який є 32-бітним.
Довгий режим, який є 64-бітним режимом, який ми всі знайомі з сучасними архітектурами, розширює простір адресів для доступу до 0xFFFFFFFFFFFFFFFF.
Ця тема сама по собі може зайняти тижні на пояснення, але я хотів лише на дуже високому рівні затронути той факт, що процесор повинен переключитися на 32-бітний режим і потім нарешті на 64-бітний шляхом встановлення лінії A-20, роботи з реєстром керування та GDT в поєднанні з сторінковою адресацією.
Я витратив кілька місяців, щоб досягти цього рівня, щоб ви мали базове розуміння збірки, оскільки ми починаємо вивчати справжню збірку 64-бітної збірки в наступних навчальних матеріалах та потім нашу навчальну програму C++, з якої ми вивчимо кожен блок коду в 64-бітній збірці.