请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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 生成的结果。 我的目标是确定启用该指令的特定标志。 谢谢