【发布时间】:2010-12-20 01:45:50
【问题描述】:
每当我编译启用优化的 C 或 C++ 代码时,GCC 都会将函数对齐到 16 字节边界(在 IA-32 上)。如果函数小于 16 个字节,GCC 会用一些字节填充它,这似乎根本不是随机的:
19: c3 ret
1a: 8d b6 00 00 00 00 lea 0x0(%esi),%esi
它似乎总是8d b6 00 00 00 00 ... 或8d 74 26 00。
函数填充字节有什么意义吗?
【问题讨论】:
-
我的理解是/曾经是 GCC 使用 0 进行函数对齐填充,但由于我无法指出可能不是很有帮助的来源...