Share on Facebook Share on Twitter Email
Answers.com

NOP

 

(NO oPeration) See no-op.

Download Computer Desktop Encyclopedia to your iPhone/iTouch

Search unanswered questions...
Enter a question here...
Search: All sources Community Q&A Reference topics
Wikipedia: NOP
Top

In computer science NOP or NOOP (short for No OPeration or No Operation Performed) is an assembly language instruction, sequence of programming language statements, or computer protocol command that effectively does nothing at all.

Contents

NOP machine instruction

Some computer instruction sets include an instruction whose explicit purpose is not to change the state of any of the programmer accessible registers, status flags or memory, and which may require a specific number of clock cycles to execute. In other instruction sets, a NOP has to be simulated by executing an instruction having operands that cause the same effect (e.g., on the SPARC processor the instruction sethi 0, %g0 is the recommended solution).

A NOP is most commonly used for timing purposes, to force memory alignment, to prevent hazards, to occupy a branch delay slot, or as a place-holder to be replaced by active instructions later on in program development (or to replace removed instructions when refactoring would be problematic or time-consuming). In some cases, a NOP can have minor side effects; for example, on the Motorola 68000 series of processors, the NOP opcode will cause a synchronization of the pipeline.[1]

Here are the characteristics of the NOP instruction for some CPU architectures:

CPU architecture Mnemonic Bytes Opcode
Intel x86 CPU family NOP 1; 1–9 for i686 0x90; 0x0f 0x1f [2]
Intel 8051 / MCS-51 family NOP 1 0x00
MIPS NOP 4 0x00000000
PowerPC NOP 4 0x60000000 (extended opcode for ori r0,r0,0)

NOP code

NOP (or NOOP) is sometimes used as a description for the action performed by a function or a sequence of programming language statements if the function or code has no effect (it might also be called redundant code). A common compiler optimization is the detection and removal of this kind of code.

The following is an example of a single C statement that behaves like a NOP (the issue is whether the statement affects program output, not whether or not a compiler generates any code for this statement):

    i+1;

(This statement performs an addition and discards the result.)

The simplest possible statement in C that behaves like a NOP is the so called null statement; which is just a semi-colon in a context requiring a statement. (A compiler is not required to generate a NOP instruction in this case; typically no instructions whatsoever would be generated.)

  ;

The null statement is useless by itself, but can have a syntactic use in a wider context, e.g., within the context of a loop:

  while (ReadChar() != '\n')
     ;

The above code continues calling the function ReadChar until it returns a \n (newline) character.

The Python programming language has a pass statement which has no effect when executed and thus serves as a NOP. It is primarily used to ensure correct syntax due to Python's indentation-sensitive syntax.

NOP protocol commands

Many computer protocols, such as telnet, include a NOP command that a client can issue to request a response from the server without requesting any other actions. Such a command can be used to ensure the connection is still alive or that the server is responsive. A NOOP command is part of the following protocols (this is a partial list):

Note that unlike the other protocols listed, the IMAP4 NOP command has a specific purpose which is to allow the client to request that the server send unsolicited information reflecting the actions of other clients.

While most telnet or FTP servers respond to a NOOP command with "OK" or "+OK", some programmers have added quirky responses to the client. For example, the ftpd daemon of MINIX responds to NOOP with a message[3]:

200 NOOP to you too!

Cracking

NOPs are often involved when cracking software that checks for serial numbers, specific hardware or software requirements, presence or absence of hardware dongles, etc. This is accomplished by altering functions and subroutines to by-pass security checks and instead simply return the expected value being checked for. Since most of the instructions in the security check routine will be unused, these would be replaced with NOPs.

See also

References


 
 

 

Copyrights:

Computer Desktop Encyclopedia. THIS COPYRIGHTED DEFINITION IS FOR PERSONAL USE ONLY.
All other reproduction is strictly prohibited without permission from the publisher.
© 1981-2009 Computer Language Company Inc.  All rights reserved.  Read more
Wikipedia. This article is licensed under the Creative Commons Attribution/Share-Alike License. It uses material from the Wikipedia article "NOP" Read more