什么是二进制格式的“对齐”字段?为什么需要它?

时间:2010-03-06 08:27:22

标签: linker loader binaryfiles elf portable-executable

ELF 文件格式中,我们在Segment Header Table又称Program Header Table中有一个对齐字段。

如果是Windows PE文件格式,它们会将其提升到下一级别,Sections有两个对齐值,一个在磁盘文件中,另一个在内存中。 PE文件头指定了这两个值。

我对这种对齐并不了解。我们需要什么?怎么&在哪里使用?同样,我不知道二进制文件格式上下文中的对齐方式,但为什么我们需要它呢?

1 个答案:

答案 0 :(得分:2)

好吧,对齐通常会扩展某个值的存储大小以占用一些“圆”空间,如32,64,128位等。

如果我们谈论二进制格式,可以这样做以优化格式处理。当您读/写一些“圆形”数据长度部分时,读/写操作会更快。

我找到了一本适合你的阅读材料,用现在我想出的更好的词语表达出来:

Data structure alignment

  

数据结构对齐是数据在计算机内存中的排列和访问方式。它由两个独立但相关的问题组成:数据对齐数据结构填充。当现代计算机读取或写入存储器地址时,它将以字大小的块(例如,32位系统上的4字节块)执行此操作。 数据对齐意味着将数据放入存储器偏移量等于字大小的某个倍数,这会因CPU处理内存的方式而提高系统性能。要对齐数据,可能需要在最后一个数据结构的末尾和下一个数据结构的开头之间插入一些无意义的字节,即数据结构填充