在ELF文件格式中,我们在aka中有一个Alignment字段。Segment Header Table
Program Header Table
在 Windows PE 文件格式的情况下,他们将其提升到下一个级别,Section 有两个对齐值,一个在磁盘文件中,另一个在内存中。PE 文件头指定了这两个值。
我对这种对齐方式一无所知。我们需要它做什么?如何以及在哪里使用它?同样,我不知道二进制文件格式上下文中的对齐是什么,但我们为什么需要它?
在ELF文件格式中,我们在aka中有一个Alignment字段。Segment Header Table
Program Header Table
在 Windows PE 文件格式的情况下,他们将其提升到下一个级别,Section 有两个对齐值,一个在磁盘文件中,另一个在内存中。PE 文件头指定了这两个值。
我对这种对齐方式一无所知。我们需要它做什么?如何以及在哪里使用它?同样,我不知道二进制文件格式上下文中的对齐是什么,但我们为什么需要它?
好吧,对齐通常是拉伸某个值的存储大小以占用一些“圆形”空间,例如 32、64、128 位等。
如果我们谈论的是二进制格式,可能是为了优化格式处理。当您读/写一些“圆形”数据长度部分时,读/写操作会更快。
我为你找到了一个读物,用我现在能想到的更好的词来表达:
数据结构对齐是数据在计算机内存中排列和访问的方式。它由两个独立但相关的问题组成:数据对齐和数据结构填充。当现代计算机读取或写入内存地址时,它将以字大小的块(例如 32 位系统上的 4 字节块)执行此操作。数据对齐意味着将数据放置在等于字大小的某个倍数的内存偏移处,由于 CPU 处理内存的方式,这会提高系统的性能。为了对齐数据,可能需要在最后一个数据结构的结尾和下一个数据结构的开头之间插入一些无意义的字节,这就是数据结构填充。