我已经看到了两者.rodata
并被.rdata
用作细分。我应该使用哪一个,它们之间有什么区别?
问问题
1166 次
2 回答
2
.rodata 和 .rdata 有什么区别
主要的(唯一的?)差异是文化。
对于链接器和加载器(以及目标文件格式),您可以使用任何您喜欢的名称。只要(在链接期间)应该在同一节中的内容对该节使用相同的名称,并且该节的属性得到充分描述(例如,使用链接器脚本,包括用于操作系统)。如果您愿意处理额外的麻烦,也没有什么可以阻止您拥有多个单独的部分(例如,可能是“rdata_initialization”、“rdata_frequently_used”和“rdata_rarely_used”以提高缓存局部性)。
但是,为了方便起见(鉴于大多数人不会对节做任何特殊的事情),为了确保工具对同一节使用相同的名称,编译器使用特定操作系统的“正常”作为默认值,并将假定“. rdata" 用于 Windows(因为这对于 Windows 来说是正常的)和 "rodata" 用于 *nix 克隆(因为这对于 Unix 来说是正常的)。
于 2021-01-16T02:00:13.477 回答