什么.byte start_of_setup-1f意味着在Linux内核代码中

时间:2016-07-21 02:53:41

标签: assembly linux-kernel

我想了解linux内核中x86实模式入口点的含义:

_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

特别是最后一行.byte start_of_setup-1f

1 个答案:

答案 0 :(得分:3)

1:local label

1f是对当前行的标签1转发的引用。 (一个文件可以包含多个数字标签。这对于可以在多个位置插入相同代码块的inline-asm或汇编程序宏非常有用。)

所以

.byte   start_of_setup - 1f

是两个标签之间的距离(以字节为单位),截断(如果需要)到一个字节。

另请参阅代码Wiki,了解更多指向文档和指南的链接。