首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在使用gcc -o2优化时会增加延时?

为什么在使用gcc -o2优化时会增加延时?
EN

Stack Overflow用户
提问于 2021-07-13 04:45:43
回答 1查看 27关注 0票数 0

我用液晶屏读取了一个STM32的示例代码,发现下面的代码,它的目的是写入液晶屏控制器的寄存器索引作为液晶屏控制器的输出数据。

代码语言:javascript
复制
void LCD_WR_REG(uint16_t regval)
{ 
    regval = regval;       // Necessary delay when using -o2 optimization
    LCD->LCD_REG = regval;
}

我在-o2上搜索了一段时间,但没有得到太多有用的信息,比如这里的注释是什么意思,或者为什么这里需要自我赋值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-13 06:01:23

这个评论是完全错误的。这个操作将会被优化。我相信这条评论是在代码的原始作者正在努力让它工作的地方写的,还有其他东西在这一行。

代码语言:javascript
复制
LCD_WR_REG:
        ldr     r3, .L3
        strh    r0, [r3]        @ movhi
        bx      lr
.L3:
        .word   1207993344

如果将regval声明为volatile,可能会有一些影响

代码语言:javascript
复制
void LCD_WR_REG1(volatile uint16_t regval)
{ 
    regval = regval;       // Necessary delay when using -o2 optimization
    LCD->LCD_REG = regval;
}
代码语言:javascript
复制
LCD_WR_REG1:
        sub     sp, sp, #8
        strh    r0, [sp, #6]    @ movhi
        ldrh    r3, [sp, #6]
        strh    r3, [sp, #6]    @ movhi
        ldr     r2, .L7
        ldrh    r3, [sp, #6]
        strh    r3, [r2]        @ movhi
        add     sp, sp, #8
        bx      lr
.L7:
        .word   1207993344

https://godbolt.org/z/Th7naabf7

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68353687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档