- क्या
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 में भी किया जा रहा है , उसी टिप्पणी के साथ।