NOP指令概述及作用,NOP指令概述作用
/*********************************************************************
* Author : Samson
* Date : 08/03/2014
* Test platform:
* Linux ubuntu 3.2.0-58-generic-pae
* GNU bash, version 4.2.39
* *******************************************************************/
電腦科學中,NOP或NOOP(No Operation或No Operation Performed的縮寫,意為無操作)是組合語言的一個指令,一系列編程語句,或網路傳輸協議中的表示不做任何有效操作的命令。
NOP是用執行一條具有運算元,具有相同效果的指令;
NOP指令通常用於控制時序的目的,強制記憶體對齊,防止流水線災難,佔據分支指令延遲),或是作為預留位置以供程式的改善(或替代被移除的指令)。
C語言中最簡單的NOP塊被稱為空白語句;其只包括一個分號。
;
但是至於是否是把這樣的一個分號在編譯的時候編譯為NOP指令,則是需要確定編譯器是如何進行編譯的,有可能對此句進行了最佳化,不一定就是完全能夠對上號的;
NOP通常在破解軟體時有特殊用途,例如檢查序號,特定硬體或軟體需求,加密狗等的軟體。這是通過更改函數和/或子程式以跳過安全檢查,直接返回期望的檢測值實現的。由於大多數安全檢查子程式中的指令會被廢棄,它們會被NOP所代替。即是使用NOP指令將進行檢查的原來的代碼給替換掉。
NOP指令有何作用
一個nop為1個指令周期,主要用於精確定時或者延時
nop指令的作用:
1)就是通過nop指令的填充(nop指令一個位元組),使指令按字對齊,從而減少取指令時的記憶體訪問次數。(一般用來記憶體位址偶數對齊,比如有一條指令,佔3位元組,這時候使用nop指令,cpu 就可以從第四個位元組處讀取指令了。)
2)通過nop指令產生一定的延遲,但是對於快速的CPU來說效果不明顯,可以使用rep首碼,多延遲幾個時鐘;-->具體應該說是佔用了3個時鐘脈衝!
3)i/o傳輸時,也會用一下 nop,等待緩衝區清空,匯流排恢複;
4)清除由上一個算術邏輯指令設定的flag位;
5)破解:)對於原程式中驗證部分使用nop來填充,使驗證失效;
6)有一個朋友說的比較厲害--在太空梭控製程序中防止程式跳飛!
本文來自CSDN部落格,轉載請標明出處:blog.csdn.net/...1.aspx
NOP指令是什?有什功可以?
NOP是空語句!什麼也不執行的,但它佔用一個指令的執行時間,也就是做精確延時
這和for的延時程式比時間短,易控制。