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.

[参考译文] 编译器/MSP432E411Y:CCS 中的 ARM 编译器:数组在函数内初始化会生成奇怪的汇编?

Guru**** 2589280 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/729523/compiler-msp432e411y-arm-compiler-in-ccs-array-initialize-inside-function-generates-strange-assembly

器件型号:MSP432E411Y

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

尊敬的编译器专家:

我在函数中具有以下代码行:

uint8_t wr_buf[8]={0xFF、0xFF、0xFF、0xFF、0xFF、 0xFF、0xFF、0xFF};

相应的反汇编为:

475         uint8_t wr_Buf[8]={0xFF、0xFF、0xFF、0xFF、0xFF、0xFF、 0xFF、0xFF、0xFF};
         $C$L89:
0000037e:  4991               LDR       R1、[PC、#0x244]
00000380:  680A               LDR       R2、[R1]
00000382:  A802               添加       r0、sp、#8
00000384:  6002               str       R2、[r0]
00000386:  6849               LDR       R1、[R1、#4]
00000388:  6041               str       R1、[r0、#4]

在第二个 LDR 中、我得到一个例外3。

代码有什么问题? 编译器为什么没有抱怨?

使用以下代码时、效果良好:

   uint8_t wr_buf[8];

   uint32_t idx;
   对于(idx=0;idx<8;idx++){
      WR_buf[idx]= 0xFF;
   }

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

    对于包含有问题源代码行的函数 的源文件、请按照文章如何提交编译器测试用例中的说明提交测试用例。  这将允许我出于相同的原因精确复制相同的汇编代码。  然后、在其他专家的帮助下、我可能可以确定发生了什么。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、George、
    感谢您的支持。
    我再次检查并找到原因:未对齐访问配置错误的陷阱。 这不是编译器错误。