【发布时间】:2016-01-09 03:11:42
【问题描述】:
在位于路径arch/i386/kernel/head.S 的linux 源代码中的head.s 文件中,使用ALIGN,如下面的ret 指令后给出的代码sn-p 所示。我的问题是这个ALIGN 是什么,据我所知它不是指令,也不是汇编指令,那么这是什么以及为什么在这里使用它?
您可以在以下网站获取head.S的代码:
http://kneuro.net/cgi-bin/lxr/http/source/arch/i386/kernel/head.S?v=2.4.0
路径:arch/i386/kernel/head.S
/*
* We depend on ET to be correct. This checks for 287/387.
*/
check_x87:
movb $0,X86_HARD_MATH
clts
fninit
fstsw %ax
cmpb $0,%al
je 1f
movl %cr0,%eax
xorl $4,%eax
movl %eax,%cr0
ret
ALIGN /* why ALIGN is used and what it is? */
1: movb $1,X86_HARD_MATH
.byte 0xDB,0xE4
ret
【问题讨论】:
-
强制下一条指令与下一个字边界对齐?
-
@user3528438 不是真正的 word 边界,它更复杂。在现代 CPU 上,通常是 16 字节对齐。
标签: linux-kernel