在x86汇编代码中输入任何新函数时,堆栈指针地址是否需要被8整除?

在x86汇编代码中输入任何新函数时,堆栈指针地址是否需要被8整除?,x86,X86,我使用arm处理器的汇编编程,在堆栈指针不能被8整除时,我观察到应用程序中出现一些崩溃。 当您输入新函数时,X86处理器是否还需要一个可被8整除的堆栈指针 Windows XP/7操作系统 arch-80386及以上版本除非启用对齐检查功能,否则x86 CPU将在堆栈指针不是机器字倍数的情况下正常工作(除了可能的性能影响),在这种情况下,所有未对齐的内存访问将导致异常(#AC).这取决于您使用的ABI-请使用OS/platform/architecture标记。是否同时标记x86和ARM?没有意

我使用arm处理器的汇编编程,在堆栈指针不能被8整除时,我观察到应用程序中出现一些崩溃。 当您输入新函数时,X86处理器是否还需要一个可被8整除的堆栈指针

Windows XP/7操作系统
arch-80386及以上版本

除非启用对齐检查功能,否则x86 CPU将在堆栈指针不是机器字倍数的情况下正常工作(除了可能的性能影响),在这种情况下,所有未对齐的内存访问将导致异常(#AC).

这取决于您使用的ABI-请使用OS/platform/architecture标记。是否同时标记x86和ARM?没有意义。在哪里可以启用对齐检查功能将EFLAGS.AC(位18)和CR0.AM(位18)设置为1。您只能从内核端操作CR0.AM,而不能确定EFLAGS.AC。请参阅英特尔或AMD的官方文档。