如何理解 'mach-o/fat.h' 中关于 fat_arch_64 的评论
How to understand the comments about fat_arch_64 in 'mach-o/fat.h'
最近在学习Mach-O相关的资料,看到评论
当切片大于 4mb 或切片的偏移量大于 4mb 时,将使用 64 位 fat 文件格式。
在 'mach-o/fat.h'
关于 struct fat_acrh_64
我知道我们应该使用 fat_header.magic
的值来决定使用 fat_arch
或 fat_arch_64
来解析 fat 文件中的数据。
但是我对评论感到困惑,为什么限制条件是4 Mb
,评论中的slice/offset
是什么意思?
这是头文件的截图:
评论有误,大家可以在野外找反例
这是来自 M1 Mac:
% otool -f /usr/sbin/php-fpm
Fat headers
fat_magic 0xcafebabe
nfat_arch 2
architecture 0
cputype 16777223
cpusubtype 3
capabilities 0x0
offset 16384
size 14061120
align 2^14 (16384)
architecture 1
cputype 16777228
cpusubtype 2
capabilities 0x80
offset 14090240
size 14110192
align 2^15 (32768)
如您所见,大小和偏移量都超过了 14MB。
一个合理的猜测是它们意味着 4GB,这是 uint32 可以表示的极限。
最近在学习Mach-O相关的资料,看到评论
当切片大于 4mb 或切片的偏移量大于 4mb 时,将使用 64 位 fat 文件格式。
在 'mach-o/fat.h'
关于 struct fat_acrh_64
我知道我们应该使用 fat_header.magic
的值来决定使用 fat_arch
或 fat_arch_64
来解析 fat 文件中的数据。
但是我对评论感到困惑,为什么限制条件是4 Mb
,评论中的slice/offset
是什么意思?
这是头文件的截图:
评论有误,大家可以在野外找反例
这是来自 M1 Mac:
% otool -f /usr/sbin/php-fpm
Fat headers
fat_magic 0xcafebabe
nfat_arch 2
architecture 0
cputype 16777223
cpusubtype 3
capabilities 0x0
offset 16384
size 14061120
align 2^14 (16384)
architecture 1
cputype 16777228
cpusubtype 2
capabilities 0x80
offset 14090240
size 14110192
align 2^15 (32768)
如您所见,大小和偏移量都超过了 14MB。
一个合理的猜测是它们意味着 4GB,这是 uint32 可以表示的极限。