एनओपी (कोड)

From Vigyanwiki
Revision as of 11:08, 17 July 2023 by alpha>Reena

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

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

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