2

我已经看到了两者.rodata并被.rdata用作细分。我应该使用哪一个,它们之间有什么区别?

4

2 回答 2

3

RODATA用于ELFRDATA用于COFFMach-O中最接近的等价物是__TEXT,__const

于 2021-01-16T03:30:34.027 回答
2

.rodata 和 .rdata 有什么区别

主要的(唯一的?)差异是文化。

对于链接器和加载器(以及目标文件格式),您可以使用任何您喜欢的名称。只要(在链接期间)应该在同一节中的内容对该节使用相同的名称,并且该节的属性得到充分描述(例如,使用链接器脚本,包括用于操作系统)。如果您愿意处理额外的麻烦,也没有什么可以阻止您拥有多个单独的部分(例如,可能是“rdata_initialization”、“rdata_frequently_used”和“rdata_rarely_used”以提高缓存局部性)。

但是,为了方便起见(鉴于大多数人不会对节做任何特殊的事情),为了确保工具对同一节使用相同的名称,编译器使用特定操作系统的“正常”作为默认值,并将假定“. rdata" 用于 Windows(因为这对于 Windows 来说是正常的)和 "rodata" 用于 *nix 克隆(因为这对于 Unix 来说是正常的)。

于 2021-01-16T02:00:13.477 回答