- क्या
rep; nopमतलब है? - क्या यह
pauseनिर्देश के समान है ? - क्या यह
rep nop(अर्ध-उपनिवेश के बिना) समान है? - सरल
nopनिर्देश में क्या अंतर है ? - क्या यह AMD और Intel प्रोसेसर पर अलग तरह से व्यवहार करता है?
- (बोनस) इन निर्देशों के लिए आधिकारिक दस्तावेज कहां है?
इस प्रश्न के लिए प्रेरणा
एक अन्य प्रश्न की टिप्पणियों में कुछ चर्चा के बाद , मुझे एहसास हुआ कि मुझे पता नहीं है कि rep; nop;x86 (या x86-64) विधानसभा में क्या मतलब है। और मुझे वेब पर एक अच्छी व्याख्या भी नहीं मिली।
मुझे पता है कि repयह एक उपसर्ग है जिसका अर्थ है "अगले अनुदेश के cxसमय को दोहराएं " (या कम से कम यह पुराने 16-बिट x86 विधानसभा में था)। इस के अनुसार विकिपीडिया पर सारांश तालिका , ऐसा लगता है repकेवल के साथ इस्तेमाल किया जा सकता movs, stos, cmps, lods, scas(लेकिन शायद इस सीमा नए प्रोसेसर पर हटा दिया गया था)। इस प्रकार, मुझे लगता है कि rep nop(अर्ध-बृहदान्त्र के बिना) एक nopऑपरेशन के cxसमय को दोहराएगा ।
हालाँकि, आगे की खोज के बाद, मैं और भी उलझन में पड़ गया। ऐसा लगता है कि rep; nopऔर pause बिल्कुल एक ही opcode के लिए मानचित्र , और pauseबस की तुलना में थोड़ा अलग व्यवहार है nop। 2005 के कुछ पुराने मेल ने अलग-अलग बातें कही:
- "बहुत अधिक बिजली न जलाने की कोशिश करें"
- "यह सिर्फ 2 बाइट एन्कोडिंग के साथ 'एनओपी' के बराबर है।"
- "यह जादू पर जादू है। इसकी तरह 'शून्य लेकिन दूसरे एचटी भाई को चलाने दो"
- "यह एथलोन पर इंटेल और तेज़ पैडिंग पर रोक है"
इन विभिन्न मतों के साथ, मैं इसका सही अर्थ नहीं समझ सका।
लिनक्स कर्नेल में इसका उपयोग किया जा रहा है ( i386 और x86_64 दोनों पर ), इस टिप्पणी के साथ: /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */इसका उपयोग BeRTOS में भी किया जा रहा है , उसी टिप्पणी के साथ।