#stack #x86-64 #elf #bootloader
#стек #x86-64 #elf #загрузчик
Вопрос:
Я пишу минимальную ОС с нуля. Я включил подкачку и длительный режим, но когда я хочу настроить стек, у меня возникает несколько вопросов.
-
Содержит ли указатель стека виртуальный адрес, автоматически преобразуемый MMU в физический адрес при использовании инструкций PUSH, POP?
-
Упоминается ли позиция стека в файле ELF?
Комментарии:
1. Когда подкачка включена, все адреса являются виртуальными. Если ваши таблицы страниц не сопоставлены с идентификаторами (поэтому virt = phys), вам придется изменить RSP, чтобы указать правильный виртуальный адрес.
Ответ №1:
Указатель стека должен быть виртуальным адресом после включения подкачки.
Стандартный psABI x86-64 не указывает начальное значение для указателя стека, поэтому он не отображается в файлах ELF. Наиболее распространенный загрузчик программ (Linux) по умолчанию рандомизирует адрес стека.