为什么在x86 Linux中为elf可执行文件在对齐地址处加载函数?
收藏

我一直在研究x86上的linux elf可执行文件,主要使用ida,但是
还有GDB。我注意到的一件事是函数总是被加载的
在字对齐的地址?有人知道原因吗?
我不知道启动x86指令的任何要求
在对齐的地址。也不能因为页面对齐原因
页面边界仍然可以在函数中的任何位置。
我很感激你的任何见解。
谢谢。


最佳答案:

你说得对,指令不需要对齐。在x86处理器上,汇编指令使用1到至少15字节的可变长度代码进行编码。
但是,指令是从缓存中读取的,通常按64字节对齐,当代码正确对齐时,执行管道的某些部分运行得更快:解码、循环、分支预测等。
最好的信息来源是阿格纳·福格的文件:http://www.agner.org/optimize/

    公众号
    关注公众号订阅更多技术干货!