【问题标题】:What is the point of padding?填充的意义何在?
【发布时间】:2010-12-27 22:48:20
【问题描述】:

特别是,我正在读取 OS X 上 Intel 32 的 Mach-O 二进制文件格式。在 FAT 标头之后,在第一个存档的偏移量之前有一大堆填充。所有这些填充有什么意义?

更具体地说,在 FAT 标头和第一个存档(特别是 mach_header)之间有超过 4000 字节的填充。为什么要包含所有这些额外的字节?! OS X 是否喜欢在其所有通用二进制文件中添加 4 KB?

【问题讨论】:

  • 4000 字节只差 4KB,而不是 4MB。

标签: binary universal machine-code mach-o


【解决方案1】:

我的猜测是,添加它是为了确保下一段从 4096 字节边界开始,即 x86 上虚拟内存页面的大小。 x86(和 PCC)上的虚拟内存是按块分配的,块的大小是 4kB 的倍数。保持光盘格式与内存页面大小兼容,使按需加载更容易实现。

【讨论】:

  • 啊,我明白了。你有它在点上。第一个存档从 0x1000 开始,即十进制的 4096。这很有意义,谢谢!
猜你喜欢
  • 2012-06-13
  • 1970-01-01
  • 2014-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-29
  • 2013-11-20
  • 2013-06-21
相关资源
最近更新 更多