当我在 IAR Embedded 中编译 ARM 系列代码时,是否可以在 C 代码中设置未优化代码的特定部分 workbench

Is it possible to set the specific section which is non-optimazed code in C code when I compile ARM-series code in IAR Embedded workbench

我使用 IAR Embedded workbench 编辑 C 代码并编译。 我很好奇,如果我在IAR项目选项中将Optimizations level设置为High,为什么代码中的编程顺序会改变。

我已经查看更改原因。可能跟分支猜测有关

我想知道如果我想在高级别使用优化级别,我可以通过使用特殊标签或选项来设置不连续更改的特定代码部分吗?

谢谢。

目前我没有使用 IAR。所以我无法测试特定的预处理器指令。 但根据官方 development guide.

,以下内容应该适用于 IAR 的功能
#pragma optimize=none
void foo(void)
{
    /* Do something, but don't optimize this function */ 
}

Description
Use this pragma directive to decrease the optimization level, or to turn off some specific optimizations. This pragma directive only affects the function that follows immediately after the directive.

引自开发指南(第 253 页)。