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.

[参考译文] RM57L843:优化级别-og 上 MLA 指令的使用

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1401669/rm57l843-use-of-mla-instruction-at-optimization-level--og

器件型号:RM57L843

工具与软件:

int myfunc(int num) {
    int x,i;
    for(i=0; i<10; i++)
    {
      x= (num*num)+i;
    }
    return x;
}

对于上面的示例代码、我使用 ARM GCC 10.2.1。 当我使用优化级别-O1时、会生成以下汇编代码:  

myfunc:
        mov     r3, r0
        mul     r3, r0, r3
        add     r0, r3, #9
        bx      lr

当我使用-og 时、将生成以下程序集:

myfunc:
        mov     r3, #0
        b       .L2
.L3:
        mla     r2, r0, r0, r3
        add     r3, r3, #1
.L2:
        cmp     r3, #9
        ble     .L3
        mov     r0, r2
        bx      lr

有人能告诉我在使用-og 时导致生成 MLA 指令的标志是什么吗? 显然-og 使用-O1使用的所有标志、但干扰调试的标志除外。 我手动检查了所有 O1标记、但无法重现-og 生成的结果。 我的目标是确定启用该指令的特定标志。 谢谢  

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

    尊敬的 Studio:

    我对迟交答复表示诚挚的歉意。

    我在度假几天,然后是一个周末。  

    请确认您是否仍然遇到此问题。

    ——
    谢谢、此致、
    Jagadish。