[程序员]经典挖坑场景9,gcc代码优化与汇编指令的冲突

在之前总结过一个coredump:
Coredump-X: movaps 可能会导致 段错误(SIGSEGV)
https://mzhan017.blog.csdn.net/article/details/145477425

原因是gcc做了优化,使用到了浮点类型的指令,这个指令要求是存储地址是16字节对齐,如果不对齐,就会coredump。产生coredump的地址是栈上的一个地址,之前一直没有想明白为什么没有对齐,按照理论是gcc来做对齐,然后gcc做优化使用浮点指令。所以一切都在gcc的操控范围之内,怎么产生不一致的可能?

昨天凌晨想通了这个问题,是因为工程里有几个文件是直接使用汇编写的,所以对于栈空间汇编代码自己来做的空间分配。所以有产生这种不对齐的可能。
所以下一步方向就是看这一部分汇编代码,看看有没有地方产生不对齐的可能。

这一块也是容易挖坑,踩坑的地方。

你可能感兴趣的:(gcc,gdb/coredump,汇编,gcc)