NOP指令概述及作用,NOP指令概述作用

來源:互聯網
上載者:User

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的延時程式比時間短,易控制。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.