我想了解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
答案 0 :(得分:3)
1:
是local label。
1f
是对当前行的标签1
转发的引用。 (一个文件可以包含多个数字标签。这对于可以在多个位置插入相同代码块的inline-asm或汇编程序宏非常有用。)
所以
.byte start_of_setup - 1f
是两个标签之间的距离(以字节为单位),截断(如果需要)到一个字节。
另请参阅x86代码Wiki,了解更多指向文档和指南的链接。