एनओपी (कोड): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 7: Line 7:


==मशीन भाषा निर्देश==
==मशीन भाषा निर्देश==
कुछ कंप्यूटर अनुदेश सेटों में एक निर्देश सम्मिलित होता है जिसका स्पष्ट उद्देश्य प्रोग्रामर-सुलभ [[प्रोसेसर रजिस्टर]], प्रक्रिया स्थिति या मुख्य मेमोरी में से किसी की स्थिति को बदलना नहीं है। इसे निष्पादित करने के लिए अक्सर [[घड़ी चक्र]]ों की एक अच्छी तरह से परिभाषित संख्या की आवश्यकता होती है। अन्य निर्देश सेटों में, कोई स्पष्ट एनओपी निर्देश नहीं है, लेकिन असेंबली भाषा मेमोनिक एनओपी एक निर्देश का प्रतिनिधित्व करता है जो एनओपी के रूप में कार्य करता है; उदाहरण के लिए, [[SPARC|एसपीएआरसी]] पर, <code>सेठी 0, %g0</code>.
कुछ कंप्यूटर अनुदेश सेटों में एक निर्देश सम्मिलित होता है जिसका स्पष्ट उद्देश्य प्रोग्रामर-सुलभ [[प्रोसेसर रजिस्टर]], प्रक्रिया स्थिति या मुख्य मेमोरी में से किसी की स्थिति को बदलना नहीं है। इसे निष्पादित करने के लिए अक्सर [[घड़ी चक्र]]ों की एक अच्छी तरह से परिभाषित संख्या की आवश्यकता होती है। अन्य निर्देश सेटों में, कोई स्पष्ट एनओपी निर्देश नहीं है, लेकिन असेंबली भाषा मेमोनिक एनओपी एक निर्देश का प्रतिनिधित्व करता है जो एनओपी के रूप में कार्य करता है; उदाहरण के लिए, [[SPARC|एसपीएआरसी]] पर, <code>सेठी 0, %जी0</code>.


किसी एनओपी को मेमोरी तक नहीं पहुंचना चाहिए, क्योंकि इससे मेमोरी में खराबी या पेज में दुर्दशा हो सकती है।
किसी एनओपी को मेमोरी तक नहीं पहुंचना चाहिए, क्योंकि इससे मेमोरी में खराबी या पेज में दुर्दशा हो सकती है।
Line 23: Line 23:
!टिप्पणियाँ
!टिप्पणियाँ
|-
|-
| [[Intel|इंटेलl]] [[x86]] [[central processing unit|सीपीयू]] परिवार   
| [[Intel|इंटेलl]] [[x86|एक्स86]] [[central processing unit|सीपीयू]] परिवार   
| <code>NOP</code>
| <code>एनओपी</code>
| 1; 1–9 for i686 and x86-64
| 1; 1–9 for i686 and एक्स86-64
| [[hexadecimal|0x]]90<ref>{{cite web |url=http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf|title=Intel 64 and IA-32 Architectures Software Developer's Manual: Instruction Set Reference A-Z|access-date=2012-03-01}}</ref>
| [[hexadecimal|0एक्स]]90<ref>{{cite web |url=http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf|title=Intel 64 and IA-32 Architectures Software Developer's Manual: Instruction Set Reference A-Z|access-date=2012-03-01}}</ref>
| 0x90 decodes to <code>xchg eax, eax</code> in all modes except [[long mode]], where the opcode 0x90 still has no effect. The longer encodings are described in Intel's manual.
|0एक्स90 लंबे मोड को छोड़कर सभी मोड में एक्ससीhg eaएक्स, eaएक्स को डिकोड करता है, जहां opसीode 0एक्स90 का अभी भी कोई प्रभाव नहीं है। इंटेल के मैनुअल में लंबी एन्कोडिंग का वर्णन किया गया है।
|-
|-
| [[Intel|इंटेलl]] [[8051]] / [[MCS-51|एमसीएस-51]] परिवार     
| [[Intel|इंटेलl]] [[8051]] / [[MCS-51|एमसीएस-51]] परिवार     
| <code>NOP</code>
| <code>एनओपी</code>
| 1
| 1
| 0x00
| 0एक्स00
|
|
|-
|-
| [[ARM architecture|एआरएम ए32]]   
| [[ARM architecture|एआरएम ए32]]   
| <code>NOP</code>
| <code>एनओपी</code>
| 4
| 4
| 0x00000000
| 0एक्स00000000
| This stands for <code>andeq r0, r0, r0</code>. The assembly instruction <code>nop</code> will most likely expand to <code>mov r0, r0</code> which is encoded 0xE1A00000 (little-endian architecture).<ref>{{Cite web|url=http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0170b/Caccegih.html|title=4.8.4. NOP ARM pseudo-instruction|work=RealView Compilation Tools for BREW Assembler Guide}}</ref>
|यह andeq आर0, आर0, आर0 के लिए है। असेंबली निर्देश एनओपी संभवतः mov आर0, आर0 तक विस्तारित होगा जो 0एक्सE1A00000 (लिटिल-एंडियन आर्किटेक्चर) एन्कोड किया गया है।
|-
|-
| [[ARM architecture#Thumb-2|एआरएम टी32]] (16 बिट)   
| [[ARM architecture#Thumb-2|एआरएम टी32]] (16 बिट)   
| <code>NOP</code>
| <code>एनओपी</code>
| 2
| 2
| 0xb000
| 0एक्सb000
| Opcode for <code>ADD SP, #0</code> - Add zero to the stack pointer (No operation). The assembly instruction <code>nop</code> will most likely expand to <code>mov r8, r8</code> which is encoded 0x46C0.<ref>{{Cite web|url=http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0170b/Cacbgiaj.html|title=5.6.3. NOP Thumb pseudo-instruction|work=RealView Compilation Tools for BREW Assembler Guide}}</ref>
|एडीडी एसपी के लिए ऑपकोड, #0 - स्टैक पॉइंटर में शून्य जोड़ें (कोई ऑपरेशन नहीं)। असेंबली निर्देश एनओपी संभवतः mov आर8, आर8 तक विस्तारित होगा जो 0एक्स46सी0 एन्कोडेड है।
|-
|-
| [[ARM architecture#Thumb-2|एआरएम टी32]] (32 बिट)
| [[ARM architecture#Thumb-2|एआरएम टी32]] (32 बिट)
| <code>NOP</code>
| <code>एनओपी</code>
| 4
| 4
| 0xF3AF 8000
| 0एक्सF3AF 8000
|
|
|-
|-
| [[ARM architecture#ARMv8_and_64-bit|एआरएम ए64]] (64 बिट)
| [[ARM architecture#ARMv8_and_64-bit|एआरएम ए64]] (64 बिट)
| <code>NOP</code>
| <code>एनओपी</code>
| 4
| 4
| 0xD503201F
| 0एक्सD503201F
|
|
|-
|-
| [[AVR microcontrollers|एवीआर]]
| [[AVR microcontrollers|एवीआर]]
| <code>NOP</code>
| <code>एनओपी</code>
| 2
| 2
| 0x0000
| 0एक्स0000
| one clock cycle
|एक घड़ी चक्र
|-
|-
| rowspan="2" | [[IBM&nbsp;System/360|आईबीएम सिस्टम/360]], [[IBM&nbsp;System/370|आईबीएम सिस्टम/370]], [[IBM&nbsp;System/390|आईबीएम सिस्टम/390]], [[z/Architecture|जेड/आर्किटेक्चर]], [[UNIVAC&nbsp;Series 90|यूनिवैक सीरीज 90]]
| rowspan="2" | [[IBM&nbsp;System/360|आईबीएम सिस्टम/360]], [[IBM&nbsp;System/370|आईबीएम सिस्टम/370]], [[IBM&nbsp;System/390|आईबीएम सिस्टम/390]], [[z/Architecture|जेड/आर्किटेक्चर]], [[UNIVAC&nbsp;Series 90|यूनिवैक सीरीज 90]]
| <code>NOP</code>
| <code>एनओपी</code>
| 4
| 4
| 0x47000000 or 0x470nnnnn or 0x47n0nnnn where "n" is any 4-बिट value.
| 0एक्स47000000 or 0एक्स470nnnnn or 0एक्स47n0nnnn where "n" is any 4-बिट value.
| rowspan="2" | The NOP ("No-Op") and NOPR ("No-Op Register") are a subset of the "Branch on Condition" or "Branch on Condition Register" instructions, respectively; both versions have two options for generating a NO-OP.
| rowspan="2" |एनओपी ("नो-ऑप") और एनओपीआर ("नो-ऑप रजिस्टर") क्रमशः "ब्रांच ऑन कंडीशन" या "ब्रांच ऑन कंडीशन रजिस्टर" निर्देशों का एक उपसमूह हैं; दोनों संस्करणों में NO-OP उत्पन्न करने के लिए दो विकल्प हैं।
In the case of both the NOP and NOPR instructions, the first 0 in the second byte is the "mask" value, the condition to test such as equal, not equal, high, low, etc. If the mask is 0, no branch occurs.


In the case of the NOPR instruction, the second value in the second byte is the register to branch on. If register 0 is chosen, no branch occurs regardless of the mask value. Thus, if either of the two values in the second byte is 0, the branch will not happen.
एनओपी और एनओपीआईआर दोनों निर्देशों के मामले में, दूसरे बाइट में पहला 0 "मास्क" मान है, परीक्षण करने की स्थिति जैसे कि बराबर, बराबर नहीं, उच्च, निम्न, आदि। यदि मास्क 0 है, तो कोई शाखा नहीं है घटित होना।


In the case of the NOP instruction, the second value in the second byte is the "base" register of a combined base register, displacement register and offset address. If the base register is also 0, the branch is not taken regardless of the value of the displacement register or displacement address.
एनओपीआईआर निर्देश के मामले में, दूसरे बाइट में दूसरा मान शाखा के लिए रजिस्टर है। यदि रजिस्टर 0 चुना जाता है, तो मास्क मूल्य की परवाह किए बिना कोई शाखा नहीं होती है। इस प्रकार, यदि दूसरे बाइट में दोनों में से कोई भी मान 0 है, तो शाखा नहीं होगी।
 
एनओपी निर्देश के मामले में, दूसरे बाइट में दूसरा मान संयुक्त आधार रजिस्टर, विस्थापन रजिस्टर और ऑफसेट पते का "आधार" रजिस्टर है। यदि आधार रजिस्टर भी 0 है, तो विस्थापन रजिस्टर या विस्थापन पते के मूल्य की परवाह किए बिना शाखा नहीं ली जाती है।
|-
|-
| <code>NOPR</code>
| <code>एनओपीR</code>
| 2
| 2
| 0x0700 or 0x070n or 0x07n0 where "n" is any 4-बिट value.
| 0एक्स0700 or 0एक्स070n or 0एक्स07n0 where "n" is any 4-बिट value.
|-
|-
| [[SuperH|सुपर एच]]
| [[SuperH|सुपर एच]]
| <code>NOP</code>
| <code>एनओपी</code>
| 2
| 2
| 0x0009
| 0एक्स0009
|
|
|-
|-
| [[MIPS architecture|एमआईपीएस]]
| [[MIPS architecture|एमआईपीएस]]
| <code>NOP</code>
| <code>एनओपी</code>
| 4
| 4
| 0x00000000
| 0एक्स00000000
| Stands for <code>sll r0,r0,0</code>, meaning: Logically shift register 0 zero बिटs to the left and store the result in register 0. Writes to register 0 are ignored; it always contains 0.
|एसएलएल आर0,आर0,0 के लिए खड़ा है, जिसका अर्थ है: तार्किक रूप से रजिस्टर 0 शून्य बिट्स को बाईं ओर स्थानांतरित करें और परिणाम को रजिस्टर 0 में संग्रहीत करें। रजिस्टर 0 पर लिखने पर ध्यान नहीं दिया जाता है; इसमें हमेशा 0 होता है.
|-
|-
| [[MIPS-X|एमआईपीएस-एक्स]]
| [[MIPS-X|एमआईपीएस-एक्स]]
| <code>NOP</code>
| <code>एनओपी</code>
| 4
| 4
| 0x60000019
| 0एक्स60000019
| (extended opcode for <code>add r0,r0,r0</code>)
|(आर0,आर0,आर0 जोड़ने के लिए विस्तारित ऑपकोड)
|-
|-
| [[MIX|एमआईएक्स]]
| [[MIX|एमआईएक्स]]
| <code>NOP</code>
| <code>एनओपी</code>
| 1 word
| 1 शब्द
| ± * * * * 0
| ± * * * * 0
| The * bytes are arबिटrary, and can be anything from 0 to the maximum byte (required to be in the range 63-99). एमआईएक्स uses sign-magnitude representation.
|* बाइट्स मनमाने हैं, और 0 से अधिकतम बाइट तक कुछ भी हो सकते हैं (63-99 की सीमा में होना आवश्यक है)। दिव्यएक्स साइन-परिमाण प्रतिनिधित्व का उपयोग करता है।
|-
|-
|  [[MMIX|एम]][[MMIX|एमआईएक्स]]
|  [[MMIX|एम]][[MMIX|एमआईएक्स]]
| <code>SWYM</code>
| <code>एसडब्ल्यूवाईएम</code>
| 4
| 4
| 0xFD******
| 0एक्सFD******
| SWYM stands for "Sympathize with your machinery". The * digits can be chosen arबिटrarily.
|एसडब्ल्यूवाईएम का मतलब है "अपनी मशीनरी के प्रति सहानुभूति रखें"* अंक मनमाने ढंग से चुने जा सकते हैं।
|-
|-
| [[Motorola 68000 family|मोटोरोला 68000 परिवार]]
| [[Motorola 68000 family|मोटोरोला 68000 परिवार]]
| <code>NOP</code>
| <code>एनओपी</code>
| 2
| 2
| 0x4E71
| 0एक्स4E71
| This synchronizes the [[Pipeline (computing)|pipeline]] and prevents instruction overlap.<ref name="m68ref" />
| यह  को सिंक्रनाइज़ करता है  [[Pipeline (computing)|पाइपलाइन]] और निर्देश ओवरलैप को रोकता है।.<ref name="m68ref" />  
|-
|-
| [[Motorola 6809|मोटोरोला 6809]]
| [[Motorola 6809|मोटोरोला 6809]]
| <code>NOP</code>
| <code>एनओपी</code>
| 1
| 1
| 0x12
| 0एक्स12
|
|
|-
|-
| [[MOS Technology 65xx|एमओएस टेक्नोलॉजी 65xx]] (उदा. [[6502]])   
| [[MOS Technology 65xx|एमओएस टेक्नोलॉजी 65एक्सएक्स]] (उदा. [[6502]])   
| <code>NOP</code>
| <code>एनओपी</code>
| 1
| 1
| 0xEA
| 0एक्सEA
| <code>'''NOP'''</code> consumes two clock cycles. [[Illegal opcode|Undefined opcodes]] in the [[NMOS logic|NMOS]] versions of the 65xx परिवार were converted to be NOPs of varying instruction lengths and cycle times in the [[WDC 65C02|65C02]].
| <code>'''एनओपी'''</code> दो घड़ी चक्रों का उपभोग करता है। [[Illegal opcode|अपरिभाषित ऑपकोड]] में  [[NMOS logic|एनएमओएस]] संस्करणों को 65एक्सएक्स परिवार were सीonverted to be एनओपी में अलग-अलग निर्देश लंबाई और चक्र समय के एनओपी में परिवर्तित किया गया था। [[WDC 65C02|65सी02]].
|-
|-
| <code>एनओपी</code>
| <code>एनओपी</code>
| 4
| 4
| 0x60000000
| 0एक्स60000000
| (extended opcode for <code>ori r0,r0,0</code>)
| (eएक्सtसमाप्तिed opसीode for <code>ori आर0,आर0,0</code>)
|-
|-
| [[PIC microcontroller|पीआईसी माइक्रोकंट्रोलर]]
| [[PIC microcontroller|पीआईसी माइक्रोकंट्रोलर]]
| <code>NOP</code>
| <code>एनओपी</code>
| 12 बिटs
| 12 बिटs
| 0b000000000000
| 0b000000000000
| <code>MOVW 0,W</code>
|एमओवीडब्ल्यू 0,डब्ल्यू
|-
|-
| [[RISC-V|आरआईएससी-वी]]
| [[RISC-V|आरआईएससी-वी]]
| <code>NOP</code>
| <code>एनओपी</code>
| 4
| 4
| 0x00000013
| 0एक्स00000013
| <code>ADDI x0, x0, 0</code>
|एडीडीआई एक्स0, एक्स0, 0
|-
|-
| [[SPARC|एसपीएआरसी]]
| [[SPARC|एसपीएआरसी]]
| <code>NOP</code>
| <code>एनओपी</code>
| 4
| 4
| 0x01000000
| 0एक्स01000000
| Stands for <code>sethi 0, %g0</code> which zeroes the hardwired-to-zero <code>%g0</code> register<ref>{{cite book
|सेठी 0, %जी0 के लिए खड़ा है जो हार्डवेयर्ड-टू-जीरो %जी0 रजिस्टर को शून्य करता है
|url          = http://www.sparc.org/standards/SPARCV9.pdf
|title        = The SPARC Architecture Manual, Version 9
|editor      = Weaver, D. L.
|editor2      = Germond, T.
|work        = SPARC International, Inc.
|publisher    = [[Prentice Hall]]
|isbn        = 0-13-825001-4
|year        = 1994
|quote        = Note that NOP is a special case of the SETHI instruction, with imm22 = 0 and rd = 0.
|access-date  = 2014-01-09
|archive-url  = https://web.archive.org/web/20120118213535/http://www.sparc.org/standards/SPARCV9.pdf
|archive-date = 2012-01-18
|url-status      = dead
}}</ref>
|-
|-
| [[Z80|जेड80]]
| [[Z80|जेड80]]
| <code>NOP</code>
| <code>एनओपी</code>
| 1
| 1
| 0x00
| 0एक्स00
| There are some other instructions without any effect (and the same timing): <code>LD A, A</code>, <code>LD B, B</code> etc.
|बिना किसी प्रभाव के कुछ अन्य निर्देश हैं (और वही समय): एलडी ए, , एलडी बी, बी आदि।
|-
|-
| [[PDP-10|पीडीपी-10]]
| [[PDP-10|पीडीपी-10]]
| <code>JFCL 0,</code> (conventional)<br><code>JUMP, SETA, SETAI, CAI, TRN, TLN</code>
| जेएफसीएल 0, (पारंपरिक)
| 1 word
जम्प, सेटा, सेताई, सीएआई, टीआरएन, टीएलएन
| 25500******* (octal)
| 1 शब्द
| Jump never<br>Jump never, set nothing, skip never
| 25500******* (अष्टभुजाकार)
|कूदो कभी नहीं
कभी कूदो मत, कुछ भी सेट मत करो, कभी मत छोड़ो
|-
|-
| [[PDP-11|पीडीपी-11]]
| [[PDP-11|पीडीपी-11]]
| <code>NOP</code>
| <code>एनओपी</code>
| 16 बिटs
| 16 बिट्स
| 000240 (octal)
| 000240 (अष्टभुजाकार)
| Clear none of the condition codes
|कोई भी शर्त कोड साफ़ न करें
|-
|-
| [[VAX]]
| [[VAX|वीएएक्स]]
| <code>NOP</code>
| <code>एनओपी</code>
| 1
| 1
| 0x01
| 0एक्स01
| Delay is dependent on processor type
|विलंब प्रोसेसर प्रकार पर निर्भर है
|}
|}
हार्डवेयर डिज़ाइन के दृष्टिकोण से, बस के अनमैप्ड क्षेत्रों को अक्सर शून्य लौटाने के लिए डिज़ाइन किया जाता है; चूंकि [[एनओपी स्लाइड]] व्यवहार अक्सर वांछनीय होता है, यह इसे ऑल-जीरोज़ ऑपकोड के साथ कोडिंग करने में पूर्वाग्रह देता है।
हार्डवेयर डिज़ाइन के दृष्टिकोण से, बस के अनमैप्ड क्षेत्रों को अक्सर शून्य लौटाने के लिए डिज़ाइन किया जाता है; चूंकि [[एनओपी स्लाइड]] व्यवहार अक्सर वांछनीय होता है, यह इसे ऑल-जीरोज़ ऑपकोड के साथ कोडिंग करने में पूर्वाग्रह देता है।


== कोड ==
== कोड ==
एक फ़ंक्शन या प्रोग्रामिंग भाषा कथनों का अनुक्रम एक एनओपी या अशक्त कथन है यदि इसका कोई प्रभाव नहीं है। कुछ संदर्भों में कुछ भाषाओं की [[प्रोग्रामिंग भाषा सिंटैक्स]] द्वारा शून्य कथनों की आवश्यकता हो सकती है।
एक कार्य या प्रोग्रामिंग भाषा कथनों का अनुक्रम एक एनओपी या अशक्त कथन है यदि इसका कोई प्रभाव नहीं है। कुछ संदर्भों में कुछ भाषाओं की [[प्रोग्रामिंग भाषा सिंटैक्स|प्रोग्रामिंग भाषा वाक्य - विन्यास]] द्वारा शून्य कथनों की आवश्यकता हो सकती है।


=== अदा ===
=== अदा ===
[[एडा (प्रोग्रामिंग भाषा)]] में, <code>null</code> कथन एनओपी के रूप में कार्य करता है।<ref>[http://www.adaic.org/resources/add_content/standards/05aarm/html/AA-5-1.html#S0134 Ada Reference Manual &mdash; null statements]. "The execution of a null_statement has no effect."</ref> जैसा कि वाक्यविन्यास निषिद्ध करता है कि नियंत्रण कथन या फ़ंक्शन खाली हों, <code>null</code> कथन का उपयोग यह निर्दिष्ट करने के लिए किया जाना चाहिए कि किसी कार्रवाई की आवश्यकता नहीं है। (इस प्रकार, यदि प्रोग्रामर कथनों का अनुक्रम लिखना भूल जाता है, तो प्रोग्राम संकलित करने में विफल हो जाएगा।)
[[एडा (प्रोग्रामिंग भाषा)]] में, <code>null</code> कथन एनओपी के रूप में कार्य करता है।<ref>[http://www.adaic.org/resources/add_content/standards/05aarm/html/AA-5-1.html#S0134 Ada Reference Manual &mdash; null statements]. "The execution of a null_statement has no effect."</ref> जैसा कि वाक्यविन्यास निषिद्ध करता है कि नियंत्रण कथन या कार्य खाली हों, <code>null</code> कथन का उपयोग यह निर्दिष्ट करने के लिए किया जाना चाहिए कि किसी कार्रवाई की आवश्यकता नहीं है। (इस प्रकार, यदि प्रोग्रामर कथनों का अनुक्रम लिखना भूल जाता है, तो प्रोग्राम संकलित करने में विफल हो जाएगा।)


=== सी और डेरिवेटिव ===
=== सी और डेरिवेटिव ===
Line 202: Line 191:
एक खाली ब्लॉक (यौगिक विवरण) भी एक एनओपी है, और अधिक सुपाठ्य हो सकता है:
एक खाली ब्लॉक (यौगिक विवरण) भी एक एनओपी है, और अधिक सुपाठ्य हो सकता है:
   {}
   {}
कुछ घटना  में, जैसे किसी फ़ंक्शन का मुख्य भाग, एक ब्लॉक का उपयोग किया जाना चाहिए, लेकिन यह खाली हो सकता है। C में, कथन खाली नहीं हो सकते - सरल कथन a के साथ समाप्त होने चाहिए; (अर्धविराम) जबकि यौगिक कथन {} (ब्रेसिज़) में संलग्न होते हैं, जिन्हें स्वयं निम्नलिखित अर्धविराम की आवश्यकता नहीं होती है। इस प्रकार उन संदर्भों में जहां एक कथन व्याकरणिक रूप से आवश्यक है, ऐसे कुछ शून्य कथन का उपयोग किया जा सकता है।
कुछ घटना  में, जैसे किसी कार्य का मुख्य भाग, एक ब्लॉक का उपयोग किया जाना चाहिए, लेकिन यह खाली हो सकता है। सी में, कथन खाली नहीं हो सकते - सरल कथन के साथ समाप्त होने चाहिए; (अर्धविराम) जबकि यौगिक कथन {} (ब्रेसिज़) में संलग्न होते हैं, जिन्हें स्वयं निम्नलिखित अर्धविराम की आवश्यकता नहीं होती है। इस प्रकार उन संदर्भों में जहां एक कथन व्याकरणिक रूप से आवश्यक है, ऐसे कुछ शून्य कथन का उपयोग किया जा सकता है।


शून्य कथन अपने आप में बेकार है, लेकिन व्यापक संदर्भ में इसका वाक्यात्मक उपयोग हो सकता है, उदाहरण के लिए, लूप के संदर्भ में:
शून्य कथन अपने आप में बेकार है, लेकिन व्यापक संदर्भ में इसका वाक्यात्मक उपयोग हो सकता है, उदाहरण के लिए, लूप के संदर्भ में:
Line 219: Line 208:
   while (getchar() != '\n');
   while (getchar() != '\n');
</syntaxhighlight>
</syntaxhighlight>
(ध्यान दें कि अंतिम फॉर्म भ्रमित करने वाला हो सकता है, और इस तरह कुछ कंपाइलरों या कंपाइलर विकल्पों के साथ एक चेतावनी उत्पन्न होती है, क्योंकि पंक्ति के अंत में कोष्ठक के बाद रखे जाने पर अर्धविराम प्रायः  फ़ंक्शन कॉल निर्देश के अंत को इंगित करता है)।
(ध्यान दें कि अंतिम फॉर्म भ्रमित करने वाला हो सकता है, और इस तरह कुछ संकलकों या संकलक विकल्पों के साथ एक चेतावनी उत्पन्न होती है, क्योंकि पंक्ति के अंत में कोष्ठक के बाद रखे जाने पर अर्धविराम प्रायः  कार्य कॉल निर्देश के अंत को इंगित करता है)।


उपरोक्त कोड फ़ंक्शन getchar() को तब तक कॉल करना जारी रखता है जब तक कि यह एक \n (न्यूलाइन) वर्ण नहीं लौटाता है, अनिवार्य रूप से मानक इनपुट के वर्तमान रीडिंग स्थान को अगली पंक्ति की शुरुआत में तेजी से अग्रेषित करता है।
उपरोक्त कोड कार्य गेटसीहर() को तब तक कॉल करना जारी रखता है जब तक कि यह एक \n (न्यूलाइन) वर्ण नहीं लौटाता है, अनिवार्य रूप से मानक इनपुट के वर्तमान रीडिंग स्थान को अगली पंक्ति की प्रारम्भ में तेजी से अग्रेषित करता है।


=== [[फोरट्रान]] ===
=== [[फोरट्रान]] ===
फोरट्रान में, <code>CONTINUE</code> स्टेटमेंट का उपयोग कुछ संदर्भों में किया जाता है जैसे कि डीओ लूप में अंतिम स्टेटमेंट, हालांकि इसका उपयोग कहीं भी किया जा सकता है, और इसमें कोई कार्यक्षमता नहीं होती है।
फोरट्रान में, <code>चालू रखना</code> स्टेटमेंट का उपयोग कुछ संदर्भों में किया जाता है जैसे कि डीओ लूप में अंतिम स्टेटमेंट, यदपि इसका उपयोग कहीं भी किया जा सकता है, और इसमें कोई कार्यक्षमता नहीं होती है।


=== [[जावास्क्रिप्ट]] ===
=== [[जावास्क्रिप्ट]] ===
जावास्क्रिप्ट भाषा में कोई अंतर्निहित एनओपी कथन नहीं है। कई कार्यान्वयन संभव हैं:
जावास्क्रिप्ट भाषा में कोई अंतर्निहित एनओपी कथन नहीं है। कई कार्यान्वयन संभव हैं:
* उपयोग <code>;</code> खाली बयान<ref>MDN JavaScript reference – [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/Empty empty statement]. "The empty statement is a semicolon (<code>;</code>) indicating that no statement will be executed, even if JavaScript syntax requires one."</ref> या <code>{}</code> एनओपी (कोड)#सी_एंड_डेरिवेटिव्स उदाहरणों की तरह ही खाली ब्लॉक स्टेटमेंट;
* उपयोग <code>;</code> खाली बयान<ref>MDN JavaScript reference – [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/Empty empty statement]. "The empty statement is a semicolon (<code>;</code>) indicating that no statement will be executed, even if JavaScript syntax requires one."</ref> या <code>{}</code> एनओपी (कोड)#सी_एंड_डेरिवेटिव्स उदाहरणों की तरह ही खाली ब्लॉक स्टेटमेंट;
* उपयोग <code>undefined</code> या <code>null</code> अभिव्यक्ति को एक पूर्ण कथन के रूप में (एक अभिव्यक्ति कथन) जब पिछली विधियों को सिंटैक्स द्वारा अनुमति नहीं दी जाती है।
* उपयोग <code>अपरिभाषित</code> या <code>null</code> अभिव्यक्ति को एक पूर्ण कथन के रूप में (एक अभिव्यक्ति कथन) जब पिछली विधियों को वाक्य - विन्यास द्वारा अनुमति नहीं दी जाती है।
विकल्प, उन स्थितियों में जहां किसी फ़ंक्शन की आवश्यकता होती है, ये हैं:
विकल्प, उन स्थितियों में जहां किसी कार्य की आवश्यकता होती है, ये हैं:
* उपयोग <code>Function.prototype()</code> अंतर्निहित फ़ंक्शन, जो किसी भी तर्क को स्वीकार करता है और रिटर्न देता है <code>undefined</code>;<ref>ECMAScript Language Specification – Edition 5.1 – [https://www.ecma-international.org/ecma-262/5.1/#sec-15.3.4 Properties of the Function Prototype Object]</ref>
* उपयोग <code>फ़ंक्शन.प्रोटोटाइप()</code> अंतर्निहित कार्य, जो किसी भी तर्क को स्वीकार करता है और रिटर्न देता है <code>अपरिभाषित</code>;<ref>ECMAScript Language Specification – Edition 5.1 – [https://www.ecma-international.org/ecma-262/5.1/#sec-15.3.4 Properties of the Function Prototype Object]</ref>
* तृतीय-पक्ष लाइब्रेरी में उपलब्ध एनओपी फ़ंक्शन का उपयोग करें—नीचे देखें;
* तृतीय-पक्ष लाइब्रेरी में उपलब्ध एनओपी कार्य का उपयोग करें—नीचे देखें;
* एक कस्टम एनओपी फ़ंक्शन को परिभाषित करें, जैसा कि निम्नलिखित उदाहरण में है ([[ES6]] एरो फ़ंक्शन सिंटैक्स का उपयोग करके):
* एक कस्टम एनओपी कार्य को परिभाषित करें, जैसा कि निम्नलिखित उदाहरण में है ([[ES6|ईएस6]] एरो कार्य वाक्य - विन्यास का उपयोग करके):
<syntaxhighlight lang="javascript">const noop = () => {};</syntaxhighlight>
<syntaxhighlight lang="javascript">const noop = () => {};</syntaxhighlight>


==== एंगुलरजेएस ====
==== एंगुलरजेएस ====
[[AngularJS]] फ्रेमवर्क [https://docs.angularjs.org/api/ng/function/angular.noop angular.noop] फ़ंक्शन प्रदान करता है जो कोई ऑपरेशन नहीं करता है।
[[AngularJS|कोणीयजेएस]] फ्रेमवर्क [https://docs.angularjs.org/api/ng/function/angular.noop कोणीय.नहीं] कार्य प्रदान करता है जो कोई ऑपरेशन नहीं करता है।
 
==== [[jQuery]] ====
jQuery लाइब्रेरी एक फ़ंक्शन प्रदान करती है <code>jQuery.noop()</code>, जो कुछ नहीं करता.<ref>[http://api.jquery.com/jquery.noop/ jQuery.noop()] from jQuery API documentation</ref>
 


==== [[jQuery|जेक्वेरी]] ====
जेक्वेरी लाइब्रेरी एक कार्य प्रदान करती है <code>जेक्वेरी.नहीं()</code>, जो कुछ नहीं करता.<ref>[http://api.jquery.com/jquery.noop/ jQuery.noop()] from jQuery API documentation</ref>
==== लोदाश ====
==== लोदाश ====
लॉडैश लाइब्रेरी एक फ़ंक्शन प्रदान करती है <code>_.noop()</code>, जो अपरिभाषित लौटाता है और कुछ नहीं करता।<ref>{{Cite web|url=https://lodash.com/docs/#noop|title=लोदाश दस्तावेज़ीकरण|website=lodash.com|language=en|access-date=2017-12-15}}</ref>
लॉडैश लाइब्रेरी एक कार्य प्रदान करती है <code>_.नहीं()</code>, जो अपरिभाषित लौटाता है और कुछ नहीं करता।<ref>{{Cite web|url=https://lodash.com/docs/#noop|title=लोदाश दस्तावेज़ीकरण|website=lodash.com|language=en|access-date=2017-12-15}}</ref>
 
 
=== पास्कल ===
=== पास्कल ===
सी के साथ, ; स्वयं द्वारा प्रयुक्त को [[पास्कल (प्रोग्रामिंग भाषा)]] में एक अशक्त कथन के रूप में उपयोग किया जा सकता है। वास्तव में, भाषा की विशिष्टता के कारण, BEGIN/END ब्लॉक में, END कथन से पहले अर्धविराम वैकल्पिक होता है, इस प्रकार वहां प्रयुक्त अर्धविराम अनावश्यक होता है।
सी के साथ, ; स्वयं द्वारा प्रयुक्त को [[पास्कल (प्रोग्रामिंग भाषा)]] में एक अशक्त कथन के रूप में उपयोग किया जा सकता है। वास्तव में, भाषा की विशिष्टता के कारण, आरंभ/समाप्ति ब्लॉक में, समाप्ति कथन से पहले अर्धविराम वैकल्पिक होता है, इस प्रकार वहां प्रयुक्त अर्धविराम अनावश्यक होता है।


इसके अलावा, एक ब्लॉक जिसमें सम्मिलित  है <code> BEGIN END;</code> कोई कार्रवाई न होने का संकेत देने के लिए प्लेसहोल्डर के रूप में उपयोग किया जा सकता है, भले ही इसे किसी अन्य BEGIN/END ब्लॉक के अंदर रखा गया हो।
इसके अलावा, एक ब्लॉक जिसमें सम्मिलित  है <code> आरंभ समाप्ति;</code> कोई कार्रवाई न होने का संकेत देने के लिए प्लेसहोल्डर के रूप में उपयोग किया जा सकता है, भले ही इसे किसी अन्य आरंभ/समाप्ति ब्लॉक के अंदर रखा गया हो।


===पायथन ===
===पायथन ===
[[पायथन (प्रोग्रामिंग भाषा)]] प्रोग्रामिंग भाषा में एक पायथन (प्रोग्रामिंग भाषा)#स्टेटमेंट्स और नियंत्रण प्रवाह| है<code>pass</code> ऐसा कथन जिसे निष्पादित करने पर कोई प्रभाव नहीं पड़ता है और इस प्रकार यह एनओपी के रूप में कार्य करता है। इसका उपयोग मुख्य रूप से पायथन के [[ऑफ-साइड नियम]] | इंडेंटेशन-सेंसिटिव सिंटैक्स के कारण सही सिंटैक्स सुनिश्चित करने के लिए किया जाता है; उदाहरण के लिए किसी [[ कक्षा (कंप्यूटर प्रोग्रामिंग) ]] की परिभाषा के लिए सिंटैक्स के लिए क्लास लॉजिक के साथ एक इंडेंटेड ब्लॉक की आवश्यकता होती है, जिसे इस प्रकार व्यक्त किया जाना चाहिए <code>pass</code> जब यह खाली होना चाहिए.
[[पायथन (प्रोग्रामिंग भाषा)]] प्रोग्रामिंग भाषा में एक पायथन (प्रोग्रामिंग भाषा)#स्टेटमेंट्स और नियंत्रण प्रवाह| है<code>उत्तीर्ण</code> ऐसा कथन जिसे निष्पादित करने पर कोई प्रभाव नहीं पड़ता है और इस प्रकार यह एनओपी के रूप में कार्य करता है। इसका उपयोग मुख्य रूप से पायथन के [[ऑफ-साइड नियम]] | इंडेंटेशन-सेंसिटिव वाक्य - विन्यास के कारण सही वाक्य - विन्यास सुनिश्चित करने के लिए किया जाता है; उदाहरण के लिए किसी [[ कक्षा (कंप्यूटर प्रोग्रामिंग) ]] की परिभाषा के लिए वाक्य - विन्यास के लिए श्रेणीतर्क के साथ एक इंडेंटेड ब्लॉक की आवश्यकता होती है, जिसे इस प्रकार व्यक्त किया जाना चाहिए <code>उत्तीर्ण</code> जब यह खाली होना चाहिए.


=== शेल स्क्रिप्टिंग (बैश, zsh, आदि) ===
=== शेल स्क्रिप्टिंग (बैश, ज़ेडएसएच, आदि) ===
'<code>:</code>' [कोलन] कमांड एक शेल बिल्टिन है जिसका एनओपी (कुछ न करने वाला ऑपरेशन) के समान प्रभाव होता है। यह तकनीकी रूप से एनओपी नहीं है, क्योंकि यह विशेष पैरामीटर $? को बदल देता है। (अंतिम कमांड की निकास स्थिति) से 0. इसे 'सही' में निर्मित शेल का पर्याय माना जा सकता है, और इसकी निकास स्थिति सत्य (0) है।<ref>[http://tldp.org/LDP/abs/html/special-chars.html Advanced Bash-Scripting Guide > Chapter 3. Special Characters]</ref><ref>bash manpage > SHELL BUILTIN COMMANDS</ref><ref>zsh manpage (zshbuiltins) > SHELL BUILTIN COMMANDS</ref>
'<code>:</code>' [कोलन] कमांड एक शेल बिल्टिन है जिसका एनओपी (कुछ न करने वाला ऑपरेशन) के समान प्रभाव होता है। यह तकनीकी रूप से एनओपी नहीं है, क्योंकि यह विशेष पैरामीटर $? को बदल देता है। (अंतिम कमांड की निकास स्थिति) से 0. इसे 'सही' में निर्मित शेल का पर्याय माना जा सकता है, और इसकी निकास स्थिति सत्य (0) है।<ref>[http://tldp.org/LDP/abs/html/special-chars.html Advanced Bash-Scripting Guide > Chapter 3. Special Characters]</ref><ref>bash manpage > SHELL BUILTIN COMMANDS</ref><ref>zsh manpage (zshbuiltins) > SHELL BUILTIN COMMANDS</ref>


 
=== [[TeX|टेक्स]] मैक्रो भाषा (सीओएनमूलपाठ, लाटेकस, आदि) ===
=== [[TeX]] मैक्रो भाषा (ConTeXt, LaTeX, आदि) ===
टेक्स टाइपोग्राफ़िकल सिस्टम की मैक्रो भाषा में है <code>\विश्राम</code> आज्ञा।<ref>{{cite book |last1=Bausum |first1=David |title=TeX संदर्भ मैनुअल|date=2002 |publisher=Kluwer Academic Publishers |url=https://www.tug.org/utilities/plain/cseq.html#relax-rp |access-date=1 April 2020 |chapter=TeX Primitive Control Sequences |quote=According to The TeXbook, 'TeX does nothing' when it encounters <code>\relax</code>. Actually, <code>\relax</code> may tell TeX, 'This is the end of what you've been doing'.}}</ref> यह अपने आप में कुछ नहीं करता है, लेकिन इसका उपयोग तत्काल पूर्ववर्ती कमांड को किसी भी बाद के टोकन को पार्स करने से रोकने के लिए किया जा सकता है।<ref>TeX wikibook – [https://en.wikibooks.org/wiki/TeX/relax relax]</ref>
TeX टाइपोग्राफ़िकल सिस्टम की मैक्रो भाषा में है <code>\relax</code> आज्ञा।<ref>{{cite book |last1=Bausum |first1=David |title=TeX संदर्भ मैनुअल|date=2002 |publisher=Kluwer Academic Publishers |url=https://www.tug.org/utilities/plain/cseq.html#relax-rp |access-date=1 April 2020 |chapter=TeX Primitive Control Sequences |quote=According to The TeXbook, 'TeX does nothing' when it encounters <code>\relax</code>. Actually, <code>\relax</code> may tell TeX, 'This is the end of what you've been doing'.}}</ref> यह अपने आप में कुछ नहीं करता है, लेकिन इसका उपयोग तत्काल पूर्ववर्ती कमांड को किसी भी बाद के टोकन को पार्स करने से रोकने के लिए किया जा सकता है।<ref>TeX wikibook – [https://en.wikibooks.org/wiki/TeX/relax relax]</ref>
 
 
== एनओपी प्रोटोकॉल कमांड ==
== एनओपी प्रोटोकॉल कमांड ==
[[टेलनेट]] जैसे कई प्रोटोकॉल (कंप्यूटिंग) में एक एनओपी कमांड सम्मिलित  होता है जिसे क्लाइंट किसी अन्य कार्रवाई का अनुरोध किए बिना सर्वर से प्रतिक्रिया का अनुरोध करने के लिए जारी कर सकता है। इस तरह के कमांड का उपयोग कीपलाइव या सर्वर रिस्पॉन्सिव होने के लिए किया जा सकता है। एक NOOP कमांड निम्नलिखित प्रोटोकॉल का हिस्सा है (यह एक आंशिक सूची है):
[[टेलनेट]] जैसे कई प्रोटोकॉल (कंप्यूटिंग) में एक एनओपी कमांड सम्मिलित  होता है जिसे क्लाइंट किसी अन्य कार्रवाई का अनुरोध किए बिना सर्वर से प्रतिक्रिया का अनुरोध करने के लिए जारी कर सकता है। इस तरह के कमांड का उपयोग कीपलाइव या सर्वर रिस्पॉन्सिव होने के लिए किया जा सकता है। एक नहीं कमांड निम्नलिखित प्रोटोकॉल का हिस्सा है (यह एक आंशिक सूची है):
* टेलनेट
* टेलनेट
* [[फाइल ट्रांसफर प्रोटोकॉल]]
* [[फाइल ट्रांसफर प्रोटोकॉल]]
Line 276: Line 257:
* [[बिटटोरेंट (प्रोटोकॉल)]]
* [[बिटटोरेंट (प्रोटोकॉल)]]


ध्यान दें कि सूचीबद्ध अन्य प्रोटोकॉल के विपरीत, IMAP4 NOOP कमांड का एक विशिष्ट उद्देश्य है - यह सर्वर को क्लाइंट को कोई भी लंबित अधिसूचना भेजने की अनुमति देता है।
ध्यान दें कि सूचीबद्ध अन्य प्रोटोकॉल के विपरीत, आईएमएपी4 नहीं कमांड का एक विशिष्ट उद्देश्य है - यह सर्वर को क्लाइंट को कोई भी लंबित अधिसूचना भेजने की अनुमति देता है।


जबकि अधिकांश टेलनेट या [[एफ़टीपी]] सर्वर एनओओपी कमांड का जवाब ओके या +ओके के साथ देते हैं, कुछ प्रोग्रामर ने क्लाइंट के लिए विचित्र प्रतिक्रियाएं जोड़ दी हैं। उदाहरण के लिए, <code>ftpd</code> [[MINIX]] का डेमॉन NOOP को संदेश के साथ प्रतिक्रिया देता है:<ref name="minix_ftpd">{{cite web|url=http://www.cise.ufl.edu/~cop4600/cgi-bin/lxr/http/source.cgi/commands/ftpd/ftpd.c#L139|title=ftpd.c|access-date=2016-06-19}}</ref>
जबकि अधिकांश टेलनेट या [[एफ़टीपी]] सर्वर एनओओपी कमांड का जवाब ओके या +ओके के साथ देते हैं, कुछ प्रोग्रामर ने क्लाइंट के लिए विचित्र प्रतिक्रियाएं जोड़ दी हैं। उदाहरण के लिए, <code>एफटीपीडी</code> [[MINIX|एमआईएनआईएक्स]] का डेमॉन नहीं को संदेश के साथ प्रतिक्रिया देता है:<ref name="minix_ftpd">{{cite web|url=http://www.cise.ufl.edu/~cop4600/cgi-bin/lxr/http/source.cgi/commands/ftpd/ftpd.c#L139|title=ftpd.c|access-date=2016-06-19}}</ref>
  FTP सर्वर रिटर्न कोड NOOP की सूची आपके लिए भी!
  एफ़टीपी सर्वर रिटर्न कोड नहीं की सूची आपके लिए भी!


== क्रैकिंग ==
== क्रैकिंग ==
Line 285: Line 266:


== सुरक्षा शोषण ==
== सुरक्षा शोषण ==
एनओपी ऑपकोड का उपयोग एनओपी स्लाइड बनाने के लिए किया जा सकता है, जो निर्देश सूचक का सटीक मान अनिश्चित होने पर कोड को निष्पादित करने की अनुमति देता है (उदाहरण के लिए, जब बफर ओवरफ्लो के कारण स्टैक पर फ़ंक्शन का रिटर्न पता ओवरराइट हो जाता है)।
एनओपी ऑपकोड का उपयोग एनओपी स्लाइड बनाने के लिए किया जा सकता है, जो निर्देश सूचक का सटीक मान अनिश्चित होने पर कोड को निष्पादित करने की अनुमति देता है (उदाहरण के लिए, जब बफर ओवरफ्लो के कारण स्टैक पर कार्य का रिटर्न पता ओवरराइट हो जाता है)।


== यह भी देखें ==
== यह भी देखें ==
* [[कंप्यूटर आर्किटेक्चर|कंप्यूटर वास्तुकला]]
* [[कंप्यूटर आर्किटेक्चर|कंप्यूटर वास्तुकला]]
* [[एचएलटी (x86 निर्देश)]] - सीपीयू को रोक देता है
* [[एचएलटी (x86 निर्देश)|एचएलटी (एक्स86 निर्देश)]] - सीपीयू को रोक देता है
* हॉल्ट एंड कैच फायर (कंप्यूटिंग) - सीपीयू को भी रोक देता है
* हॉल्ट एंड कैच फायर (कंप्यूटिंग) - सीपीयू को भी रोक देता है
* पहचान फ़ंक्शन - एनओपी के समतुल्य कार्यात्मक प्रोग्रामिंग
* पहचान कार्य - एनओपी के समतुल्य कार्यात्मक प्रोग्रामिंग
* [[xyzzy (कंप्यूटिंग)]] - एक कमांड जो कभी-कभी NOP के स्थान पर उपयोग किया जाता है
* [[xyzzy (कंप्यूटिंग)|एक्सवायेजेडजेडवाये (कंप्यूटिंग)]] - एक कमांड जो कभी-कभी एनओपी के स्थान पर उपयोग किया जाता है
* [[IEFBR14]] - मेनफ्रेम टॉटोलॉजी
* [[IEFBR14|आईईएफबीआर14]] - मेनफ्रेम टॉटोलॉजी
* [[भराव पाठ]]
* [[भराव पाठ]]
* [[टिप्पणी (कंप्यूटर प्रोग्रामिंग)]] - आम तौर पर प्रोग्रामर के लिए एनोटेशन जिन्हें कंपाइलरों और दुभाषियों द्वारा अनदेखा किया जाता है
* [[टिप्पणी (कंप्यूटर प्रोग्रामिंग)]] - प्रायः प्रोग्रामर के लिए एनोटेशन जिन्हें संकलकों और दुभाषियों द्वारा अनदेखा किया जाता है


== संदर्भ ==
== संदर्भ ==

Revision as of 11:08, 17 July 2023

कंप्यूटर विज्ञान में, एनओपी, नो-ऑप, या एनओओपी (उच्चारण नो ऑप; बिना ऑपरेशन का संक्षिप्त रूप) एक मशीन कोड निर्देश और इसकी असेंबली भाषा निमोनिक, प्रोग्रामिंग भाषा स्टेटमेंट, या प्रोटोकॉल (कंप्यूटिंग) कमांड है जो कुछ भी नहीं करता है।

मशीन भाषा निर्देश

कुछ कंप्यूटर अनुदेश सेटों में एक निर्देश सम्मिलित होता है जिसका स्पष्ट उद्देश्य प्रोग्रामर-सुलभ प्रोसेसर रजिस्टर, प्रक्रिया स्थिति या मुख्य मेमोरी में से किसी की स्थिति को बदलना नहीं है। इसे निष्पादित करने के लिए अक्सर घड़ी चक्रों की एक अच्छी तरह से परिभाषित संख्या की आवश्यकता होती है। अन्य निर्देश सेटों में, कोई स्पष्ट एनओपी निर्देश नहीं है, लेकिन असेंबली भाषा मेमोनिक एनओपी एक निर्देश का प्रतिनिधित्व करता है जो एनओपी के रूप में कार्य करता है; उदाहरण के लिए, एसपीएआरसी पर, सेठी 0, %जी0.

किसी एनओपी को मेमोरी तक नहीं पहुंचना चाहिए, क्योंकि इससे मेमोरी में खराबी या पेज में दुर्दशा हो सकती है।

एनओपी का उपयोग प्रायः समय निर्धारण उद्देश्यों के लिए किया जाता है, डेटा संरचना संरेखण को मजबूर करने के लिए, खतरे (कंप्यूटर वास्तुकला) को रोकने के लिए, एक शाखा विलंब स्लॉट पर कब्जा करने के लिए, एक प्रचलित निर्देश जैसे जंप को शून्य करने के लिए, एक निष्पादन निर्देश के लक्ष्य के रूप में , या प्रोग्राम विकास में बाद में सक्रिय निर्देशों द्वारा प्रतिस्थापित किए जाने वाले प्लेस-होल्डर के रूप में (या जब पुनर्संगठित करना समस्याग्रस्त या समय लेने वाला होगा तो हटाए गए निर्देशों को प्रतिस्थापित करना)। कुछ घटनाओं में, एनओपी के अप्रौढ दुष्प्रभाव हो सकते हैं; उदाहरण के लिए, मोटोरोला 68000 श्रृंखला के प्रोसेसर पर, एनओपी ऑपकोड पाइपलाइन (कंप्यूटिंग) के तादात्म्य का कारण बनता है।[1]

कुछ सीपीयू वास्तुकला के लिए एनओपी निर्देश नीचे सूचीबद्ध हैं:

सीपीयू आर्किटेक्चर अनुदेश स्मरणीय बाइट्स ऑपकोड टिप्पणियाँ
इंटेलl एक्स86 सीपीयू परिवार एनओपी 1; 1–9 for i686 and एक्स86-64 0एक्स90[2] 0एक्स90 लंबे मोड को छोड़कर सभी मोड में एक्ससीhg eaएक्स, eaएक्स को डिकोड करता है, जहां opसीode 0एक्स90 का अभी भी कोई प्रभाव नहीं है। इंटेल के मैनुअल में लंबी एन्कोडिंग का वर्णन किया गया है।
इंटेलl 8051 / एमसीएस-51 परिवार एनओपी 1 0एक्स00
एआरएम ए32 एनओपी 4 0एक्स00000000 यह andeq आर0, आर0, आर0 के लिए है। असेंबली निर्देश एनओपी संभवतः mov आर0, आर0 तक विस्तारित होगा जो 0एक्सE1A00000 (लिटिल-एंडियन आर्किटेक्चर) एन्कोड किया गया है।
एआरएम टी32 (16 बिट) एनओपी 2 0एक्सb000 एडीडी एसपी के लिए ऑपकोड, #0 - स्टैक पॉइंटर में शून्य जोड़ें (कोई ऑपरेशन नहीं)। असेंबली निर्देश एनओपी संभवतः mov आर8, आर8 तक विस्तारित होगा जो 0एक्स46सी0 एन्कोडेड है।
एआरएम टी32 (32 बिट) एनओपी 4 0एक्सF3AF 8000
एआरएम ए64 (64 बिट) एनओपी 4 0एक्सD503201F
एवीआर एनओपी 2 0एक्स0000 एक घड़ी चक्र
आईबीएम सिस्टम/360, आईबीएम सिस्टम/370, आईबीएम सिस्टम/390, जेड/आर्किटेक्चर, यूनिवैक सीरीज 90 एनओपी 4 0एक्स47000000 or 0एक्स470nnnnn or 0एक्स47n0nnnn where "n" is any 4-बिट value. एनओपी ("नो-ऑप") और एनओपीआर ("नो-ऑप रजिस्टर") क्रमशः "ब्रांच ऑन कंडीशन" या "ब्रांच ऑन कंडीशन रजिस्टर" निर्देशों का एक उपसमूह हैं; दोनों संस्करणों में NO-OP उत्पन्न करने के लिए दो विकल्प हैं।

एनओपी और एनओपीआईआर दोनों निर्देशों के मामले में, दूसरे बाइट में पहला 0 "मास्क" मान है, परीक्षण करने की स्थिति जैसे कि बराबर, बराबर नहीं, उच्च, निम्न, आदि। यदि मास्क 0 है, तो कोई शाखा नहीं है घटित होना।

एनओपीआईआर निर्देश के मामले में, दूसरे बाइट में दूसरा मान शाखा के लिए रजिस्टर है। यदि रजिस्टर 0 चुना जाता है, तो मास्क मूल्य की परवाह किए बिना कोई शाखा नहीं होती है। इस प्रकार, यदि दूसरे बाइट में दोनों में से कोई भी मान 0 है, तो शाखा नहीं होगी।

एनओपी निर्देश के मामले में, दूसरे बाइट में दूसरा मान संयुक्त आधार रजिस्टर, विस्थापन रजिस्टर और ऑफसेट पते का "आधार" रजिस्टर है। यदि आधार रजिस्टर भी 0 है, तो विस्थापन रजिस्टर या विस्थापन पते के मूल्य की परवाह किए बिना शाखा नहीं ली जाती है।

एनओपीR 2 0एक्स0700 or 0एक्स070n or 0एक्स07n0 where "n" is any 4-बिट value.
सुपर एच एनओपी 2 0एक्स0009
एमआईपीएस एनओपी 4 0एक्स00000000 एसएलएल आर0,आर0,0 के लिए खड़ा है, जिसका अर्थ है: तार्किक रूप से रजिस्टर 0 शून्य बिट्स को बाईं ओर स्थानांतरित करें और परिणाम को रजिस्टर 0 में संग्रहीत करें। रजिस्टर 0 पर लिखने पर ध्यान नहीं दिया जाता है; इसमें हमेशा 0 होता है.
एमआईपीएस-एक्स एनओपी 4 0एक्स60000019 (आर0,आर0,आर0 जोड़ने के लिए विस्तारित ऑपकोड)
एमआईएक्स एनओपी 1 शब्द ± * * * * 0 * बाइट्स मनमाने हैं, और 0 से अधिकतम बाइट तक कुछ भी हो सकते हैं (63-99 की सीमा में होना आवश्यक है)। दिव्यएक्स साइन-परिमाण प्रतिनिधित्व का उपयोग करता है।
एमएमआईएक्स एसडब्ल्यूवाईएम 4 0एक्सFD****** एसडब्ल्यूवाईएम का मतलब है "अपनी मशीनरी के प्रति सहानुभूति रखें"। * अंक मनमाने ढंग से चुने जा सकते हैं।
मोटोरोला 68000 परिवार एनओपी 2 0एक्स4E71 यह को सिंक्रनाइज़ करता है पाइपलाइन और निर्देश ओवरलैप को रोकता है।.[1]
मोटोरोला 6809 एनओपी 1 0एक्स12
एमओएस टेक्नोलॉजी 65एक्सएक्स (उदा. 6502) एनओपी 1 0एक्सEA एनओपी दो घड़ी चक्रों का उपभोग करता है। अपरिभाषित ऑपकोड में एनएमओएस संस्करणों को 65एक्सएक्स परिवार were सीonverted to be एनओपी में अलग-अलग निर्देश लंबाई और चक्र समय के एनओपी में परिवर्तित किया गया था। 65सी02.
एनओपी 4 0एक्स60000000 (eएक्सtसमाप्तिed opसीode for ori आर0,आर0,0)
पीआईसी माइक्रोकंट्रोलर एनओपी 12 बिटs 0b000000000000 एमओवीडब्ल्यू 0,डब्ल्यू
आरआईएससी-वी एनओपी 4 0एक्स00000013 एडीडीआई एक्स0, एक्स0, 0
एसपीएआरसी एनओपी 4 0एक्स01000000 सेठी 0, %जी0 के लिए खड़ा है जो हार्डवेयर्ड-टू-जीरो %जी0 रजिस्टर को शून्य करता है
जेड80 एनओपी 1 0एक्स00 बिना किसी प्रभाव के कुछ अन्य निर्देश हैं (और वही समय): एलडी ए, ए, एलडी बी, बी आदि।
पीडीपी-10 जेएफसीएल 0, (पारंपरिक)

जम्प, सेटा, सेताई, सीएआई, टीआरएन, टीएलएन

1 शब्द 25500******* (अष्टभुजाकार) कूदो कभी नहीं

कभी कूदो मत, कुछ भी सेट मत करो, कभी मत छोड़ो

पीडीपी-11 एनओपी 16 बिट्स 000240 (अष्टभुजाकार) कोई भी शर्त कोड साफ़ न करें
वीएएक्स एनओपी 1 0एक्स01 विलंब प्रोसेसर प्रकार पर निर्भर है

हार्डवेयर डिज़ाइन के दृष्टिकोण से, बस के अनमैप्ड क्षेत्रों को अक्सर शून्य लौटाने के लिए डिज़ाइन किया जाता है; चूंकि एनओपी स्लाइड व्यवहार अक्सर वांछनीय होता है, यह इसे ऑल-जीरोज़ ऑपकोड के साथ कोडिंग करने में पूर्वाग्रह देता है।

कोड

एक कार्य या प्रोग्रामिंग भाषा कथनों का अनुक्रम एक एनओपी या अशक्त कथन है यदि इसका कोई प्रभाव नहीं है। कुछ संदर्भों में कुछ भाषाओं की प्रोग्रामिंग भाषा वाक्य - विन्यास द्वारा शून्य कथनों की आवश्यकता हो सकती है।

अदा

एडा (प्रोग्रामिंग भाषा) में, null कथन एनओपी के रूप में कार्य करता है।[3] जैसा कि वाक्यविन्यास निषिद्ध करता है कि नियंत्रण कथन या कार्य खाली हों, null कथन का उपयोग यह निर्दिष्ट करने के लिए किया जाना चाहिए कि किसी कार्रवाई की आवश्यकता नहीं है। (इस प्रकार, यदि प्रोग्रामर कथनों का अनुक्रम लिखना भूल जाता है, तो प्रोग्राम संकलित करने में विफल हो जाएगा।)

सी और डेरिवेटिव

सी में सबसे सरल एनओपी स्टेटमेंट शून्य स्टेटमेंट है, जो एक स्टेटमेंट की आवश्यकता वाले संदर्भ में सिर्फ एक अर्ध-कोलन है।

  ;

एक खाली ब्लॉक (यौगिक विवरण) भी एक एनओपी है, और अधिक सुपाठ्य हो सकता है:

  {}

कुछ घटना में, जैसे किसी कार्य का मुख्य भाग, एक ब्लॉक का उपयोग किया जाना चाहिए, लेकिन यह खाली हो सकता है। सी में, कथन खाली नहीं हो सकते - सरल कथन ए के साथ समाप्त होने चाहिए; (अर्धविराम) जबकि यौगिक कथन {} (ब्रेसिज़) में संलग्न होते हैं, जिन्हें स्वयं निम्नलिखित अर्धविराम की आवश्यकता नहीं होती है। इस प्रकार उन संदर्भों में जहां एक कथन व्याकरणिक रूप से आवश्यक है, ऐसे कुछ शून्य कथन का उपयोग किया जा सकता है।

शून्य कथन अपने आप में बेकार है, लेकिन व्यापक संदर्भ में इसका वाक्यात्मक उपयोग हो सकता है, उदाहरण के लिए, लूप के संदर्भ में:

  while (getchar() != '\n') {}

वैकल्पिक रूप से,

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

या अधिक संक्षेप में:

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

(ध्यान दें कि अंतिम फॉर्म भ्रमित करने वाला हो सकता है, और इस तरह कुछ संकलकों या संकलक विकल्पों के साथ एक चेतावनी उत्पन्न होती है, क्योंकि पंक्ति के अंत में कोष्ठक के बाद रखे जाने पर अर्धविराम प्रायः कार्य कॉल निर्देश के अंत को इंगित करता है)।

उपरोक्त कोड कार्य गेटसीहर() को तब तक कॉल करना जारी रखता है जब तक कि यह एक \n (न्यूलाइन) वर्ण नहीं लौटाता है, अनिवार्य रूप से मानक इनपुट के वर्तमान रीडिंग स्थान को अगली पंक्ति की प्रारम्भ में तेजी से अग्रेषित करता है।

फोरट्रान

फोरट्रान में, चालू रखना स्टेटमेंट का उपयोग कुछ संदर्भों में किया जाता है जैसे कि डीओ लूप में अंतिम स्टेटमेंट, यदपि इसका उपयोग कहीं भी किया जा सकता है, और इसमें कोई कार्यक्षमता नहीं होती है।

जावास्क्रिप्ट

जावास्क्रिप्ट भाषा में कोई अंतर्निहित एनओपी कथन नहीं है। कई कार्यान्वयन संभव हैं:

  • उपयोग ; खाली बयान[4] या {} एनओपी (कोड)#सी_एंड_डेरिवेटिव्स उदाहरणों की तरह ही खाली ब्लॉक स्टेटमेंट;
  • उपयोग अपरिभाषित या null अभिव्यक्ति को एक पूर्ण कथन के रूप में (एक अभिव्यक्ति कथन) जब पिछली विधियों को वाक्य - विन्यास द्वारा अनुमति नहीं दी जाती है।

विकल्प, उन स्थितियों में जहां किसी कार्य की आवश्यकता होती है, ये हैं:

  • उपयोग फ़ंक्शन.प्रोटोटाइप() अंतर्निहित कार्य, जो किसी भी तर्क को स्वीकार करता है और रिटर्न देता है अपरिभाषित;[5]
  • तृतीय-पक्ष लाइब्रेरी में उपलब्ध एनओपी कार्य का उपयोग करें—नीचे देखें;
  • एक कस्टम एनओपी कार्य को परिभाषित करें, जैसा कि निम्नलिखित उदाहरण में है (ईएस6 एरो कार्य वाक्य - विन्यास का उपयोग करके):
const noop = () => {};

एंगुलरजेएस

कोणीयजेएस फ्रेमवर्क कोणीय.नहीं कार्य प्रदान करता है जो कोई ऑपरेशन नहीं करता है।

जेक्वेरी

जेक्वेरी लाइब्रेरी एक कार्य प्रदान करती है जेक्वेरी.नहीं(), जो कुछ नहीं करता.[6]

लोदाश

लॉडैश लाइब्रेरी एक कार्य प्रदान करती है _.नहीं(), जो अपरिभाषित लौटाता है और कुछ नहीं करता।[7]

पास्कल

सी के साथ, ; स्वयं द्वारा प्रयुक्त को पास्कल (प्रोग्रामिंग भाषा) में एक अशक्त कथन के रूप में उपयोग किया जा सकता है। वास्तव में, भाषा की विशिष्टता के कारण, आरंभ/समाप्ति ब्लॉक में, समाप्ति कथन से पहले अर्धविराम वैकल्पिक होता है, इस प्रकार वहां प्रयुक्त अर्धविराम अनावश्यक होता है।

इसके अलावा, एक ब्लॉक जिसमें सम्मिलित है आरंभ समाप्ति; कोई कार्रवाई न होने का संकेत देने के लिए प्लेसहोल्डर के रूप में उपयोग किया जा सकता है, भले ही इसे किसी अन्य आरंभ/समाप्ति ब्लॉक के अंदर रखा गया हो।

पायथन

पायथन (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा में एक पायथन (प्रोग्रामिंग भाषा)#स्टेटमेंट्स और नियंत्रण प्रवाह| हैउत्तीर्ण ऐसा कथन जिसे निष्पादित करने पर कोई प्रभाव नहीं पड़ता है और इस प्रकार यह एनओपी के रूप में कार्य करता है। इसका उपयोग मुख्य रूप से पायथन के ऑफ-साइड नियम | इंडेंटेशन-सेंसिटिव वाक्य - विन्यास के कारण सही वाक्य - विन्यास सुनिश्चित करने के लिए किया जाता है; उदाहरण के लिए किसी कक्षा (कंप्यूटर प्रोग्रामिंग) की परिभाषा के लिए वाक्य - विन्यास के लिए श्रेणीतर्क के साथ एक इंडेंटेड ब्लॉक की आवश्यकता होती है, जिसे इस प्रकार व्यक्त किया जाना चाहिए उत्तीर्ण जब यह खाली होना चाहिए.

शेल स्क्रिप्टिंग (बैश, ज़ेडएसएच, आदि)

':' [कोलन] कमांड एक शेल बिल्टिन है जिसका एनओपी (कुछ न करने वाला ऑपरेशन) के समान प्रभाव होता है। यह तकनीकी रूप से एनओपी नहीं है, क्योंकि यह विशेष पैरामीटर $? को बदल देता है। (अंतिम कमांड की निकास स्थिति) से 0. इसे 'सही' में निर्मित शेल का पर्याय माना जा सकता है, और इसकी निकास स्थिति सत्य (0) है।[8][9][10]

टेक्स मैक्रो भाषा (सीओएनमूलपाठ, लाटेकस, आदि)

टेक्स टाइपोग्राफ़िकल सिस्टम की मैक्रो भाषा में है \विश्राम आज्ञा।[11] यह अपने आप में कुछ नहीं करता है, लेकिन इसका उपयोग तत्काल पूर्ववर्ती कमांड को किसी भी बाद के टोकन को पार्स करने से रोकने के लिए किया जा सकता है।[12]

एनओपी प्रोटोकॉल कमांड

टेलनेट जैसे कई प्रोटोकॉल (कंप्यूटिंग) में एक एनओपी कमांड सम्मिलित होता है जिसे क्लाइंट किसी अन्य कार्रवाई का अनुरोध किए बिना सर्वर से प्रतिक्रिया का अनुरोध करने के लिए जारी कर सकता है। इस तरह के कमांड का उपयोग कीपलाइव या सर्वर रिस्पॉन्सिव होने के लिए किया जा सकता है। एक नहीं कमांड निम्नलिखित प्रोटोकॉल का हिस्सा है (यह एक आंशिक सूची है):

ध्यान दें कि सूचीबद्ध अन्य प्रोटोकॉल के विपरीत, आईएमएपी4 नहीं कमांड का एक विशिष्ट उद्देश्य है - यह सर्वर को क्लाइंट को कोई भी लंबित अधिसूचना भेजने की अनुमति देता है।

जबकि अधिकांश टेलनेट या एफ़टीपी सर्वर एनओओपी कमांड का जवाब ओके या +ओके के साथ देते हैं, कुछ प्रोग्रामर ने क्लाइंट के लिए विचित्र प्रतिक्रियाएं जोड़ दी हैं। उदाहरण के लिए, एफटीपीडी एमआईएनआईएक्स का डेमॉन नहीं को संदेश के साथ प्रतिक्रिया देता है:[13]

एफ़टीपी सर्वर रिटर्न कोड नहीं की सूची आपके लिए भी!

क्रैकिंग

एनओपी अक्सर तब सम्मिलित होते हैं जब सॉफ्टवेयर क्रैकिंग सॉफ़्टवेयर होता है जो सीरियल नंबर, विशिष्ट हार्डवेयर या सॉफ़्टवेयर आवश्यकताओं, हार्डवेयर डोंगल की उपस्थिति या अनुपस्थिति आदि की जांच करता है।[citation needed] यह प्रक्रिया सुरक्षा जांच को बायपास करने के लिए सबरूटीन को बदलकर पूरी की जाती है और इसके बजाय केवल अपेक्षित मूल्य लौटाया जाता है जिसके लिए जाँच की जा रही है। क्योंकि सुरक्षा जांच रूटीन में अधिकांश निर्देश अप्रयुक्त होंगे, इन्हें एनओपी से बदल दिया जाएगा, इस प्रकार बाइनरी में आने वाली हर चीज की स्थिति में बदलाव किए बिना सॉफ्टवेयर की सुरक्षा कार्यक्षमता को हटा दिया जाएगा।

सुरक्षा शोषण

एनओपी ऑपकोड का उपयोग एनओपी स्लाइड बनाने के लिए किया जा सकता है, जो निर्देश सूचक का सटीक मान अनिश्चित होने पर कोड को निष्पादित करने की अनुमति देता है (उदाहरण के लिए, जब बफर ओवरफ्लो के कारण स्टैक पर कार्य का रिटर्न पता ओवरराइट हो जाता है)।

यह भी देखें

संदर्भ

  1. 1.0 1.1 "Motorola 68000 Programmer's Reference Manual" (PDF).
  2. "Intel 64 and IA-32 Architectures Software Developer's Manual: Instruction Set Reference A-Z" (PDF). Retrieved 2012-03-01.
  3. Ada Reference Manual — null statements. "The execution of a null_statement has no effect."
  4. MDN JavaScript reference – empty statement. "The empty statement is a semicolon (;) indicating that no statement will be executed, even if JavaScript syntax requires one."
  5. ECMAScript Language Specification – Edition 5.1 – Properties of the Function Prototype Object
  6. jQuery.noop() from jQuery API documentation
  7. "लोदाश दस्तावेज़ीकरण". lodash.com (in English). Retrieved 2017-12-15.
  8. Advanced Bash-Scripting Guide > Chapter 3. Special Characters
  9. bash manpage > SHELL BUILTIN COMMANDS
  10. zsh manpage (zshbuiltins) > SHELL BUILTIN COMMANDS
  11. Bausum, David (2002). "TeX Primitive Control Sequences". TeX संदर्भ मैनुअल. Kluwer Academic Publishers. Retrieved 1 April 2020. According to The TeXbook, 'TeX does nothing' when it encounters \relax. Actually, \relax may tell TeX, 'This is the end of what you've been doing'.
  12. TeX wikibook – relax
  13. "ftpd.c". Retrieved 2016-06-19.