Я работаю над простым ядром, которое следует спецификациям multiboot. Это для проекта класса, поэтому я не могу публиковать свой код напрямую, но по моему вопросу достаточно сказать, что мы используем модифицированную версию multiboot sample code.Структура стека во время инициализации защищенного режима
Я пытаюсь установить глобальный регистр таблицы дескрипторов (GDTR), чтобы указать на соответствующий адрес. Для этого я слежу за GDT Tutorial из вики OSDev. В учебнике их примерный код для режима с плоской защитой просто загружает два значения из стека и помещает их в GDTR. Это меня смущает, потому что я думал, что GDTR должен быть установлен до, когда инициализируется стек. Я не знаю, где ESP будет указывать, если ядро еще не инициализировало его. Полагаю, что GRUB может это сделать, прежде чем переходить на какой-либо код в boot.S, но я не смог найти какую-либо документацию, чтобы предложить это.
tl; dr - Почему OSDev GDT Tutorial извлекает данные из адреса относительно ESP при загрузке адреса и размера глобальной таблицы дескрипторов?