assembly - MOVDQA और MOVAPS x86 निर्देशों के बीच अंतर?



xmm (1)

कार्यक्षमता में, वे समान हैं।

कुछ (लेकिन सभी नहीं) माइक्रो-आर्किटेक्चर पर, "डोमेन क्रॉसिंग दंड" के कारण समय अंतर होता है। इस कारण से, जब आम तौर पर डेटा को पूर्णांक एसएसई निर्देशों के साथ प्रयोग किया जा रहा है, तो movdqa उपयोग करना चाहिए, और जब फ्लोटिंग-पॉइंट निर्देशों के साथ डेटा का उपयोग किया जा रहा है तो movaps । इस विषय पर अधिक जानकारी के लिए, इंटेल ऑप्टिमाइज़ेशन मैनुअल, या एग्नेर फोग की उत्कृष्ट माइक्रोआर्किटेक्चर गाइड से परामर्श लें। ध्यान दें कि ये देरी अक्सर लोड या स्टोर की बजाय रजिस्टर-रजिस्टर चाल से जुड़ी होती है।

मैं इंटेल डेटाशीट देख रहा हूं: इंटेल® 64 और आईए -32 आर्किटेक्चर सॉफ्टवेयर डेवलपर मैनुअल और मुझे अंतर नहीं मिल रहा है

  • MOVDQA : गठबंधन डबल Quadword ले जाएँ
  • MOVAPS : गठबंधन पैक एकल सिंगल प्रेसिजन ले जाएँ

इंटेल डेटाशीट में मैं दोनों निर्देशों के लिए पा सकता हूं:

इस निर्देश का उपयोग 128-बिट मेमोरी लोकेशन से एक्सएमएम रजिस्टर लोड करने के लिए किया जा सकता है, एक्सएमएम रजिस्टर की सामग्री को 128-बिट मेमोरी लोकेशन में स्टोर करने के लिए या दो एक्सएमएम रजिस्टरों के बीच डेटा ले जाने के लिए किया जा सकता है।

केवल अंतर है:

असाइन किए गए मेमोरी स्थानों पर या से डबल क्वाडवर्ड को स्थानांतरित करने के लिए, MOVDQU निर्देश का उपयोग करें।

तथा

पैक किए गए एकल-परिशुद्धता फ़्लोटिंग-पॉइंट मानों को असाइन किए गए मेमोरी स्थानों पर या स्थानांतरित करने के लिए, MOVUPS निर्देश का उपयोग करें।

लेकिन मुझे दो अलग-अलग निर्देशों का कारण नहीं मिल रहा है?

तो क्या कोई अंतर बता सकता है?





xmm