1

特に、私は OS X 上の Intel 32 用の Mach-O バイナリ ファイル フォーマットを読み込んでいます。FAT ヘッダーの後、最初のアーカイブのオフセットの前に大量のパディングがあります。このすべてのパディングのポイントは何ですか?

具体的には、FAT ヘッダーと最初のアーカイブ (特に mach_header) の間に 4000 バイト以上のパディングがあります。これらの余分なバイトをすべて含めるのはなぜですか?! OS X は、すべてのユニバーサル バイナリに 4 KB を追加するのが好きですか?

4

1 に答える 1

6

これは、x86 の仮想メモリ ページのサイズである 4096 バイト境界で次のセグメントが開始されるようにするために追加されたものだと思います。x86 (および PCC) の仮想メモリは、サイズが 4kB の倍数のブロックに割り当てられます。ディスク フォーマットとメモリ ページ サイズとの互換性を維持することで、デマンド ロードの実装が容易になります。

于 2010-12-27T23:06:35.930 に答える