是否存在未对齐数据会导致x86 CPU产生异常的情况?

时间:2017-08-24 00:38:44

标签: exception assembly x86

我已经读过,如果某些CPU尝试访问未对齐的数据,则会产生异常。

根据我做的测试,x86 CPU在尝试访问未对齐数据时没有产生异常,但我想知道是否存在未对齐数据会导致x86 CPU产生异常的情况?

1 个答案:

答案 0 :(得分:6)

在x86上,如果在CR0寄存器中设置AM标志并在EFLAGS寄存器中设置AC标志,则CPL 3(用户私有级别)上的任何未对齐存储器访问都将导致#AC异常(中断17)。由于通常这些位是明确的,并且对它们的访问权限是特权的,您需要付出一些努力来启用它们(在某些操作系统上可能是不可能的)。