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.

[参考译文] 编译器/ARM-CGT:其他信息代码 Gen-1445

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/959364/compiler-arm-cgt-additional-information-codegen-1445

器件型号:ARM-CGT

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

为了更好地理解此缺陷的含义、我希望获得更多信息、特别是测试案例的详细信息或有关此缺陷发生的确切时间的足够信息、以便我可以将测试案例放在一起。

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

    使用 ARM 编译器版本16.9.7.LTS。   

    构建此代码...

    #include 
    typedef uint32_t array_t[16];
    #define L 12
    #define M 13
    
    void fxn (array_t array、uint64_t count)
    {
    array[L]=(uint32_t) count;
    array[M]=(uint32_t)(count >> 32);
    } 

    (笑声) 使用此命令...

    % armcl -o4 -s -mv7m3 file.c 

    检查生成的 file.asm 以查看以下行...

    ;** 8 -------------------- array[12]= count;
    ;** 9--------------- array[13]=count>>32;;**
    ------------ 返回;
    .dwpsn 文件"file.c"、第8行、第4列、IS_stmt、ISA 1.
    结构 A4、[A1、#48] ;[DPU_3_PIPE]|8|
    .dwpsn 文件"file.c"、第9行、第4列、IS_stmt、ISA 1.
    MOV A2、A3 ;[DPU_3_PIPE]|9|
    结构 A2、[A1、#52] ;[DPU_3_PIPE]|9| 

    此代码不正确。  但最好用...替换最后两条指令。

    结构 A3、[A1、#52] 

    谢谢、此致、

    乔治

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

    乔治

    感谢您的回答、其中一个相关问题:

    如果指定了特定级别的优化(例如、您的示例中的-o4)、编译器是否仅插入此不必要的寄存器副本?即使没有请求优化、编译器也可能执行此操作?

    此致、

    圣保罗。

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

    [引用 user="PauloP"]如果指定了特定级别的优化、编译器是否仅插入此不必要的寄存器副本[/quot]

    它仅在优化级别4发生。

    [引用 user="PauloP"]即使没有请求优化,编译器也可以这样做吗?

    当不使用优化(--opt_level=off)时,生成的代码会有很大的不同。  它更大且更慢。  因此、虽然编译器不提交该特定错误、但这是因为完全避免了提交该错误的机会。

    谢谢、此致、

    乔治