【发布时间】:2018-12-05 03:29:47
【问题描述】:
我正在学习汇编和低级编程本身并阅读book about it。据说我们可以将任何数据放在 elf 文件的 .text 部分中,但当然我们不能改变它,因为页面/段的权限不同.但是那里没有告诉它,它的原因是什么,在 .text 部分中有数据。许多 C++ 程序员也告诉我,g++ 编译器会放
static const char DATA[] = "SOME DATA";
也在 .text 部分内。我想知道,为什么不把这些数据放在 .rodata 部分,目的是什么?而如果使用了.text,那么.rodata中要存储什么?
主要问题是关于长模式下的这种行为。
【问题讨论】:
-
我试过了,g++ 将
DATA放入.rodata。 -
"很多 C++ 程序员也告诉过我" [需要引用]
-
@VictorPolevoy 不,我认为你的标签很好。
-
另外,如果您正在为可以直接从 ROM 芯片执行代码的系统编写代码,例如在某些 MCU 或更旧的(读取复古)系统中,则不需要复制数据到 RAM 使用它。