2014-05-14 5 views
2

운영체제 개발에 대한 자습서를 따르고 있으며 멀티 부팅 헤더에 대한 기사를 발견했습니다. 이것은 GRUB2와 함께 작동하도록 정의해야하는 몇 가지 '마법'값입니다. 이러한 명령입니다 : 내가 이해하지 못하는 것을 이제조립품 << operator

# 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 

, 그리고 난 어디서든 찾을 수없는, 우리가 정렬을 .SET 때 1 < < 0과 1 < < 1 이 무엇이며, meminfo. 사전에

감사합니다!

+1

이들은 매크로 어셈블러에 따라 다르며 C와 동일한 의미를 갖습니다. – didierc

답변

2

운영체제 개발에 관심이 있다면 이미 다른 언어로 << 연산자가 발생 했습니까? 그것은 왼쪽으로 비트 시프트입니다. 비트 인덱스를 기반으로 여기에 몇 가지 상수를 정의하는 데 사용됩니다. 아마도 .set ALIGN 1.set MEMINFO 2을 쓰는 것보다 더 분명합니다.

또한 manuals을 읽어야합니다. 그렇지 않으면 프로그래밍에 많은 어려움이 없을 것입니다.

+1

답변 주셔서 감사합니다, 나는 gcc 문서를 읽었지만 binutils 것들을 잊어 버렸습니다. 네, C 및 C++에서 encoutered하지만 다른 기능을 가질 것이라고 생각했습니다 :) –

관련 문제