簡體   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