繁体   English   中英

GCC编译器执行asm volatile(“ nop” /::)指令需要多长时间?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM