在 Linux 源代码树中,文件arch/x86/boot/header.S具有与此类似的 x86 代码,用于在调用之前清除BSS部分:main
...
# Zero the bss
movw $__bss_start, %di
movw $_end+3, %cx
xorl %eax, %eax
subw %di, %cx
shrw $2, %cx
rep; stosl
...
为什么_end
地址加了3?为什么不movw $_end, %cx
代替movw $_end+3, %cx
?