gpt4 book ai didi

assembly - ARM 汇编中是否需要 .text 和 .data?

转载 作者:行者123 更新时间:2023-12-05 02:24:02 25 4
gpt4 key购买 nike

我遇到的大多数 ARM 汇编程序都使用 .data 和 .text 段指令。但是,我注意到两件事:

  1. 很多时候 GCC 编译器本身生成的汇编代码将只使用 .text 指令,在没有 .data 指令的情况下对代码中某处的变量进行分组。

  2. 即使我不使用 .text 部分,我的程序仍然可以正常编译和运行。

我的问题:这些指令是必需的吗?如果是,为什么?如果是,为什么我的程序在没有它们的情况下仍然可以运行?

最佳答案

当您想要决定在传输程序时将定义的段放在哪里以及它们在何处执行时,有时需要使用这些段指令,在 ROM 中,在 RAM 中等。然后您可以编写自己的链接器类似于以下示例中的脚本(采用 ld 链接描述文件格式):

MEMORY
{
RAM (rw) : ORIGIN = 0x00000000, LENGTH = 128M
ROM (rx) : ORIGIN = 0xffff0000, LENGTH = 64K
}

SECTIONS
{
.startup :
{
*(.text.vectors)
sdram_init.o(.sdram_init)
main.o(.text_main)
} > ROM

.data :
{
*(.data*)
} > RAM
}

如果您使用默认链接器行为,我认为您不需要使用指令显式声明您的部分。

关于assembly - ARM 汇编中是否需要 .text 和 .data?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16283769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com