【发布时间】:2020-03-04 03:02:55
【问题描述】:
我使用 IAR Embedded Workbench 来编辑 C 代码并进行编译。 我很好奇如果我在 IAR 项目选项中将优化级别设置为高,为什么代码中的编程顺序会改变。
我已经检查了更改的原因。可能与分支推测有关。
我想知道如果我想在High使用优化级别,我可以通过使用特殊标签或选项来设置不顺序更改的特定代码部分。
谢谢。
【问题讨论】:
标签: c optimization iar
我使用 IAR Embedded Workbench 来编辑 C 代码并进行编译。 我很好奇如果我在 IAR 项目选项中将优化级别设置为高,为什么代码中的编程顺序会改变。
我已经检查了更改的原因。可能与分支推测有关。
我想知道如果我想在High使用优化级别,我可以通过使用特殊标签或选项来设置不顺序更改的特定代码部分。
谢谢。
【问题讨论】:
标签: c optimization iar
目前我不使用 IAR。所以我无法测试特定的预处理器指令。 但根据官方development guide,以下内容应该适用于 IAR 的功能。
#pragma optimize=none
void foo(void)
{
/* Do something, but don't optimize this function */
}
说明
使用此 pragma 指令来降低优化级别,或 关闭一些特定的优化。仅此 pragma 指令 影响指令后紧跟的函数。
引自开发指南(第 253 页)。
【讨论】: