我正在学习一些关于操作系统开发的教程,我找到了一篇关于多重引导头的文章。为了让它与GRUB2一起工作,您必须定义这些“神奇”值。以下是命令:
# Declare constants used for creating a multiboot header.
.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
.section .multiboot
.align 4
.long MAGIC
.long FLAGS
.long CHECKSUM现在,我不明白的是,我在任何地方都找不到,1<<0和1<<1做什么,当我们.set对齐和备忘录信息。
提前感谢!
发布于 2014-05-14 16:12:24
当然,如果您对操作系统开发感兴趣,您已经在其他语言中遇到过<<操作符了吗?这是按位向左移动。它只是用于在这里定义一些常量,基于位索引。据推测,这比写.set ALIGN 1和.set MEMINFO 2要清楚得多。
您还应该学会阅读手册,否则编程就不会有多大的进展了。
https://stackoverflow.com/questions/23659820
复制相似问题