2012-05-19 2 views
1

GNU GRUB 소스 코드를 조사 중이며 /grub-core/boot/i386/pc/*.S 개의 파일에 많은 .= 마커가 있습니다. 내가 알고 싶은 것은 무엇 .= 수단이다GAS에서 ". ="의미는 무엇입니까?

/* 
    * Windows NT breaks compatibility by embedding a magic 
    * number here. 
    */ 

    . = _start + GRUB_BOOT_MACHINE_WINDOWS_NT_MAGIC 

: 여기 /grub-core/boot/i386/pc/boot.S 파일 (선 409-414)에서 하나입니다.

+1

여기를 확인하십시오 - http://www.cs.utah.edu/dept/old/texinfo/as/as.html#SEC44 –

답변

1

GAS 및 다른 어셈블러의 경우에도 특수 기호 .은 어셈블러가 어셈블 할 현재 주소를 나타냅니다. 위와 같은 명령문은 다음 코드의 바이트가 어셈블 될 위치를 제어합니다.

. 연산자에 대한 설명서는 here입니다.

+0

이렇게 NASM에서? : times GRUB_BOOT_MACHINE_WINDOWS_NT_MAGIC - ($$ - $) db 0 –

+0

전에 NASM을 사용하지 않았습니다. 나는'$'와'$$'를 검사하고,이 주석을 조금 대체 할 것이다. :) – vhallac

+0

($$ - $)은 현재 어셈블리 위치를 의미합니다 ... –