2016-07-21 5 views
2

Ich verstehe, will die Bedeutung von x86 Real-Mode-Einspeisepunkt in Linux-Kernel:Was .Byte start_of_setup-1f bedeutet in Linux-Kernel-Code

_start: 
     # Explicitly enter this as bytes, or the assembler 
     # tries to generate a 3-byte jump here, which causes 
     # everything else to push off to the wrong offset. 
     .byte 0xeb  # short (2-byte) jump 
     .byte start_of_setup-1f 

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/x86/boot/header.S#n298

Insbesondere die letzte Zeile .byte start_of_setup-1f

Antwort

2

1: ist ein local label.

1f ist ein Verweis auf Etikett 1 Weiterleitung der aktuellen Zeile. (Eine Datei kann mehrere numerische Etiketten enthalten. Diese meist nützlich ist für die Inline-asm oder Assembler-Makros, die den gleichen Code-Block in mehreren Orten einfügen.)

So

.byte start_of_setup - 1f 

ist der Abstand (in Bytes) zwischen den beiden Labels, abgeschnitten (wenn nötig) bis auf ein Byte.

Siehe auch das Tag-Wiki für weitere Links zu Dokumenten und Anleitungen.