This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C123GH6PM:有关 TM4C123的汇编.data 段的使用问题

Guru**** 2322270 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/585840/tm4c123gh6pm-question-on-use-of-assembly-data-section-for-tm4c123

器件型号:TM4C123GH6PM

大家好、我一直在阅读汇编器/链接器的功能、我不清楚一些内容-我不理解 .data 段的使用。

假设您在没有操作系统的情况下运行程序、该程序 将保存 到内部 闪存中并从此处运行-没有任何可将值预加载到 SRAM 中的内容。 那么、.data 段的功能是什么? 它用于何处/如何使用? 汇编器是否编写单独的初始化例程?

如果您有一个单独的操作系统或加载程序将程序加载到存储器中并 填充 SRAM、我理解这一点、但是 如果您的程序是独立的、它是如何工作的?

谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    data 段用于初始化的变量-它们可以出现在每个 C/C++程序中、无论是否有底层操作系统。 链接器会创建该段、并在运行时(Tiva 中的启动文件)将该段从闪存复制到 RAM。 要了解有关 C 程序所有部分的更多信息、请参阅 TI 文档。 考虑到有一个与 ARM C 编译器相关的类似文档。  

    正如朋友 CB1在上一篇关于.asm 的文章中所建议的那样、J.Yiu 书籍也是一个很好的信息来源。 此外、Valvano 书籍也是如此。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    朋友 Petrei 的数据/工作很好-一如既往。

    他也提出了我的观点-但是、如果您创建(同时)"C"和"ASM"的"混合"、然后"利用"两者的优势、那是否最有效?

    因为您有一个可操作的 MCU 板-没有什么可以阻止您进行"自由形式"实验-因此 ASM 的(服务远远不足)复杂性可能会"被排除"。 您还可以访问 ARM 站点-确定 ASM 感兴趣的级别。

    您"从编程群中筛选自己"-甚至供应商专家也可能没有带 ASM 的"即时流畅性"-即(每天)在主流"C"中显示"如此"。您可能希望给予这一良好的考虑-在强潮中游泳并不容易-也不高效-因此 很少推荐! (仍然如此-我们知道您使用 ASM 的动机不是...)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯、这是我所困惑的-假设我在汇编语言中编写所有内容、汇编器或链接器是否会为.data 段添加自己的初始化例程? 处理器是否自动将段复制到 RAM 中而不使用显式复制功能?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以控制如何在汇编中创建.data 段。 您可以使用链接器将.data 分配到 RAM。  有关详细信息、请参阅汇编器用户指南。

    下面是默认的存储器分配。 通常、您会将.text、.const、.cinit 和.pinit 分配给闪存、并将.data、.bss、.system 和.stack 分配给 RAM。