![](/img/trans.png)
[英]Is `__asm nop` the Windows equivalent of `asm volatile(“nop”);` from GCC compiler
[英]How long it takes to GCC compiler execute an asm volatile (“nop”/::) instruction?
我在UNIX中有一个C代码,我需要保持处理器2秒钟不执行任何操作。 为此,我找到了汇编指令asm volatile(“ nop”::) 。 我进行了很多搜索,但找不到任何地方可以解释如何计算2秒钟内执行我的功能所需的NOP数。 谁能帮我?
for(i = 0; i < COUNTER; i++){
asm volatile ("nop"::);
}
在大多数微处理器中,NOP指令占用一个周期,因此数学公式也是如此:
例如,在8 MHz处理器上,一个周期占用1/8 MHz = 125 ns。 然后,您必须再增加几个循环来管理循环。
如果您所在的操作系统是OS,则不应依靠NOP指令等待几秒钟,也不应使用主动等待。 在POSIX系统(如UNIX)上,使用POSIX nanosleep函数。
只需包含unistd.h并使用:
unsigned int sleep(unsigned int seconds);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.