gpt4 book ai didi

c++ - 停止转到优化 g

转载 作者:行者123 更新时间:2023-11-30 02:00:18 26 4
gpt4 key购买 nike

在编写 asm 代码时,有一个技巧可以通过告诉 cpu 显式跳转到下一条指令来将代码减慢一两个周期。我正在考虑使用 C++ 模板做类似的事情。这是我的代码:

template <unsigned int c>
inline void adelay()
{
goto x;
x:
adelay<c-1>();
}

template <>
inline void adelay<0>()
{
}

虽然这个想法看起来不错,但优化器似乎通过删除 jmp 代码来阻碍。有什么想法可以实现吗?

背景

想要这样做的原因是为了减慢微 Controller 的代码,使其以非常特定的频率输出光束脉冲。这是一种非常特殊的用途,除了在低级硬件访问(例如编写驱动程序或编程微 Controller )之外并不常见。即使那样,我也会尽可能避免此类事情。不幸的是,这总是无法避免。

最佳答案

这就是优化器应该做的 - 优化,包括删除非功能代码。要么在您的编译器选项中完全禁用优化,要么使用其他方法来减慢您的程序,有很多 API 可以让您在定义的时间内休眠。

关于c++ - 停止转到优化 g,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15301711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com