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