Eninformàtica, unNOP,no-op oNOOP (pronunciat "no op"; abreviatura deno operació) és una instrucció dellenguatge màquina i la seva mnemotècnica delllenguatge ensamblador, declaració dellenguatge de programació o ordre deprotocol informàtic que no fa res.[1]
Algunsconjunts d'instruccions d'ordinador inclouen una instrucció el propòsit explícit de la qual és no canviar l'estat de cap delsregistres,senyals d'estat omemòria accessibles pel programador. Sovint es necessita un nombre ben definit decicles de rellotge per executar-se. En altres conjunts d'instruccions, no hi ha cap instrucció NOP explícita, però la mnemotècnica del llenguatge ensamblador NOP representa una instrucció que actua com a NOP; per exemple, a l'SPARC,sethi 0, %g0
.
Un NOP no ha d'accedir a la memòria, ja que això podria provocar unerror de memòria ode pàgina.
Un NOP s'utilitza més habitualment amb finalitats de temporització, per forçarl'alineació de memòria, per prevenirperills, per ocupar unaranura de retard de branca, per anul·lar una instrucció existent, com ara un salt, com a objectiu d'unainstrucció d'execució o com a lloc- el titular per ser reemplaçat per instruccions actives més endavant en el desenvolupament del programa (o substituir les instruccions eliminades quan la reorganització seria problemàtica o requereix molt de temps). En alguns casos, un NOP pot tenir efectes secundaris menors; per exemple, a la sèrie de processadorsMotorola 68000, el codi operatiu NOP provoca una sincronització de lacanalització.[2]
A continuació es mostren exemples d'instruccions NOP per a algunes arquitectures de CPU:
Arquitectura CPU | mnemonic | Bytes | Opcode | Notes |
---|---|---|---|---|
Intelx86CPU família | NOP | 1; 1–9 for i686 and x86-64 | 0x90[3] | 0x90 descodifica a xchg eax, eax en tots els modes excepte en mode llarg, on el codi operatiu 0x90 encara no té cap efecte. Les codificacions més llargues es descriuen al manual d'Intel. |
Intel8051 /MCS-51 família | NOP | 1 | 0x00 | |
ARM A32 | NOP | 4 | 0x00000000 | Això significa andeq r0, r0, r0. La instrucció de muntatge nop probablement s'ampliarà a mov r0, r0 que està codificat 0xE1A00000 (arquitectura little-endian).[4] |
Des del punt de vista del disseny de maquinari, les àrees no mapejades d'un autobús sovint estan dissenyades per retornar zeros; com que el comportament dela diapositiva NOP és sovint desitjable, dona un esbiaix a codificar-lo amb el codi d'operació de tots zeros.