2016-11-01 19 views
0

Я пытаюсь так трудно понять, что это делаетЧто означает глобальных переменных, заданных для MultiBoot для загрузки GRUB загрузчика

.set ALIGN, 1<<0    # align loaded modules on page boundaries 
.set MEMINFO, 1<<1    # provide memory map 
.set FLAGS, ALIGN | MEMINFO # this is the Multiboot 'flag' field 
.set MAGIC, 0x1BADB002  # 'magic number' lets bootloader find the header 
.set CHECKSUM, -(MAGIC + FLAGS) # checksum of above, to prove we are multiboot 

Так я все эти строки комментариев, но я не могу найти почему это. Как первый набор выровненных загружаемых модулей вычисляет результат для глобальной переменной ALIGN: 1 и MEMINFO равно 2. Я не могу узнать.

+5

https://www.gnu.org/software/grub/manual/multiboot/multiboot.html –

ответ

0

Ссылка Михаила на адрес Multiboot Specification показывает, что именно происходит. Символ FLAGS, содержащий 0xB0000000 в вашем случае, указывает функции, которые запрашивает ОС или требует загрузчик. Бит 0, установленный с помощью символа ALIGN, указывает, что все загрузочные модули, загруженные вместе с операционной системой, должны быть выровнены на границах страницы (4KB). Биты 2, которые установлены с помощью символа MEMINFO, указывают, что требуется информация о памяти.