NOP (codi)

De la Viquipèdia, l'enciclopèdia lliure

En informàtica, un NOP, no-op o NOOP (pronunciat "no op"; abreviatura de no operació) és una instrucció de llenguatge màquina i la seva mnemotècnica del llenguatge ensamblador, declaració de llenguatge de programació o ordre de protocol informàtic que no fa res.[1]

Instruccions en llenguatge màquina[modifica]

Alguns conjunts d'instruccions d'ordinador inclouen una instrucció el propòsit explícit de la qual és no canviar l'estat de cap dels registres, senyals d'estat o memòria accessibles pel programador. Sovint es necessita un nombre ben definit de cicles 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 un error de memòria o de pàgina.

Un NOP s'utilitza més habitualment amb finalitats de temporització, per forçar l'alineació de memòria, per prevenir perills, per ocupar una ranura de retard de branca, per anul·lar una instrucció existent, com ara un salt, com a objectiu d'una instrucció 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 processadors Motorola 68000, el codi operatiu NOP provoca una sincronització de la canalització.[2]

A continuació es mostren exemples d'instruccions NOP per a algunes arquitectures de CPU:

Arquitectura

CPU

mnemonic Bytes Opcode Notes
Intel x86 CPU 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.
Intel 8051 / 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 de la diapositiva NOP és sovint desitjable, dóna un esbiaix a codificar-lo amb el codi d'operació de tots zeros.

Referències[modifica]

  1. «What is no op (no operation)? | Definition from TechTarget» (en anglès). [Consulta: 13 novembre 2023].
  2. «Motorola 68000 Programmer's Reference Manual» (en anglès).
  3. «Intel 64 and IA-32 Architectures Software Developer's Manual: Instruction Set Reference A-Z». [Consulta: 1r març 2012].
  4. «4.8.4. NOP ARM pseudo-instruction» (en anglès). RealView Compilation Tools for BREW Assembler Guide.