【发布时间】:2021-04-21 00:55:29
【问题描述】:
我已经看到 .rodata 和 .rdata 都被用作分段。我应该使用哪一个,它们之间有什么区别?
【问题讨论】:
-
取决于目标文件格式。
-
Windows PE 格式
-
在 Windows 上使用
.rdata,在 Linux/Unix 系统上使用.rodata(至少在 ELF 对象文件中,关于 MacOS Mach-O 的 IDK)。 -
所有重要的是文件的使用者,如果使用者是加载二进制文件以在操作系统(可能是版本)上执行的软件,那么你会想要遵守它。如果您正在制作自己的工具来消费或不在乎(例如裸机),那么至少使用 gnu 工具将名称更改为您想要的任何名称都是微不足道的 .bob、.ted、.foo、.bar...
-
为该消费者使用现有(工作)工具,看看这些工具生成和使用什么。一旦你知道这行得通,你当然可以试验一下,看看另一种形式是否也行得通。
标签: assembly portable-executable segment readonly-variable