#operating-system #kernel #multiboot
#операционная система #ядро #мультизагрузка
Вопрос:
Как вы знаете , ядро Multiboot2 содержалось в файле ELF32. И файлу ELF32 должен быть четко указан адрес селектора с помощью скрипта .lds.
Но проблема в том, что grub2 требовал адреса для загрузки ядра в физической памяти. И адрес, определенный в файле ELF, использовался grub2 в качестве целевого физического адреса, когда LD связывал каждый объект ядра по этому целевому адресу.Очевидно,что связь между виртуальным адресом и физическим адресом будет полностью изменена после подкачки.
Итак,я хочу знать, все ли пойдет не так, пока заголовок ядра (в ASM) пытается перейти к ядру C с длинным переходом.
Потому что я не могу ожидать, что сделает GCC, потому что сложные правила оптимизации мордена вряд ли можно понять, просто сбросив.
Поэтому я не могу понять ,как код выполняет прыжки, прыгает ли он с относительным адресом или с абсолютным адресом? Или я могу просто изменить некоторые параметры, чтобы две программы обрабатывали код по-разному.
Большое Вам Спасибо!