是否有可能在i386上捕获数据对齐错误?也许通过设置i386特定的机器寄存器或类似的东西.
在Solaris-Sparc上我在这种情况下收到一个SIGBUS,但在i386上一切都很好.
环境:
编辑:这就是为什么我这样问:
小智 9
与此同时,我发现了一个处理该主题的英特尔CPU文
似乎很难把所有这些东西放在一起.然而,这听起来并非完全不可能.有趣的章节是4.10.5检查对齐
编辑(来自上述文件的一些简明材料):
第5-60页
Interrupt 17 Alignment Check Exception (#AC)
to enable alignment checking, the following conditions must be true:
AM flag is set(bit 18 of control regisster CR0)
AC flag is set (bit 18 of the EFLAGS)
The CPL is 3 (protected mode or virtual-8086 mode).
另外 - 在14.8.2.6中 - 提到了存储器控制器错误.换句话说,我不知道它是否相同:
table 14-11, Encoding of MMM and CCCC Sub-Fields
Address/Command Error  AC  011
为了扩展 Vokuhila-Oliba 的答案,查看“ SOF Mis-aligned pointers on x86. ”线程,gcc 似乎可以生成具有未对齐内存访问的代码。AFAIK 你对此没有任何控制权。
对 gcc 编译的代码启用对齐检查将是一个坏主意。对于好的C 代码,您可能会遇到 SIGBUS 错误。
重新编辑:抱歉