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.

[参考译文] 编译器/TM4C1294NCPDT:全局变量的初始值是多少?

Guru**** 2568565 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/824233/compiler-tm4c1294ncpdt-what-is-the-initial-values-of-global-variables

器件型号:TM4C1294NCPDT

工具/软件:TI C/C++编译器

在我的项目中找到了一个未初始化的全局变量、但非常奇怪、它在该字段中没有产生任何问题(尚未)

进一步检查发现、如果 TI 编译器将未初始化的全局变量"初始化"为零、或者微控制器始终从存储器中的某个常量(0或0xFFFF)开始、则程序将工作

当然、我将修复代码以解决此问题、但 出于好奇、是否有人知道 TI 编译器是否会将"未初始化"变量初始化为零、或者微控制器确实会从 RMA 中的某个常数开始?  

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

    尊敬的 David:

     您可以在 TI ARM 汇编用户指南中找到有关不同部分的更多详细信息。  http://www.ti.com/lit/ug/spnu118u/spnu118u.pdf。通常、.bss 段将仅在 RAM 中保留空间、直到运行时才初始化。 我不知道为什么它看起来初始化为零。 这可能是在运行时作为器件启动过程的一部分完成的(从复位矢量中、_cinit00将跳转以在 boot.asm 中运行多个启动例程)、但我不确定。 如果您坚持知道、我需要将您的问题传递给我们的编译器团队。 话虽如此、我同意将您的代码修复为不依赖于未初始化变量的初始值是正确的做法。