NOP

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

NOP(ノップ)あるいは NOOP(ノープ)とは no operation (何もしない)を意味する。プログラミングやネットワーク通信と言ったコンピュータ関連の技術用語として使用される。

マシン語[編集]

マシン語において NOP は多くの命令セットで用意されている命令である。プロセッサはこの命令を読みとると文字通り「何もせず」にプログラムカウンタインクリメントのみを行う。それ自身では何の意味も持たない命令ではあるが、

  • 外部機器や他のプログラムとの同期のタイミングを取るための時間稼ぎ
  • ジャンプ命令のジャンプ先の指標
  • 後で命令を追加する予定の場所にダミーとして置く
    • たとえば遅延スロットにとりあえず置く、あるいは置ける命令がない時に置く
  • NOPスレッドによる命令ポインタの制御
  • ワンチップマイコンPROMでは、0x00か0xffのどちらか「上書き可能なほう」で潰すと NOP になるようにしておくと、再利用に便利

などの用途で使用される。

規則的に命令を決めた結果、何の意味も持たない命令(同一レジスタでの移動、次の番地へのジャンプ)が出来たのでそれをNOPとすることもあれば(TMS9900など。また、x86の場合 XCHG AX, AX である。ただし内部的な「AXレジスタを操作する」という意味は近年の高性能化プロセッサではそのまま解釈すると並列化の邪魔になるので、AXの参照を伴わないよう特別に解釈される)、専用の命令(オペコード)を用意することもある。

1950年代のEDSACにおいて既に NOP に相当する命令はあった(コード 'X' であるが、何もしないという命令は命令でないと考えたためか命令一覧では省かれていることがあり、文字コード一覧に命令も添えてある表のほうで確認できる(EDSACでは文字コードオペコードを一致させていた))。

通信プロトコル[編集]

いくつかの通信プロトコルでは、NOP や NOOP というコマンドを備えている。このコマンドを送信した場合、具体的に何かが起こるわけではないがサーバからの応答は返ってくる(プロトコルによっては特別なメッセージや情報を返すものもある)。このコマンドは主にサーバとの接続が切断されていないか、あるいはトラフィックの増大等の理由でサーバからの応答が遅れていないかを調べる目的で使用される。

NOP もしくは NOOP コマンドを備えている主な通信プロトコルとして以下のものがある。

  • FTP - NOOP コマンド
  • SMTP - NOOP コマンド
  • POP3 - NOOP コマンド
  • TCP - TCP オプションでオプション番号 1 が No-Operation(何もしない)を意味する
  • Telnet - NOP コマンド