2011-12-29 27 views
6

असेंबली में मामूली मामूली समस्या: मैं पूरे एक्सएमएम 0 रजिस्टर को एक्सएमएम 3 में कॉपी करना चाहता हूं। मैंआप एक्सएमएम रजिस्टरों के बीच 128-बिट मान कैसे ले जाते हैं?

movdq xmm3, xmm0 

की कोशिश की है लेकिन MOVDQ दो XMM रजिस्टरों के बीच मूल्यों को स्थानांतरित करने के लिए नहीं किया जा सकता है। इसके बजाय मुझे क्या करना चाहिए?

उत्तर

10

यह movapd है, movaps, या movdqa

movaps xmm3, xmm0 

वे सभी एक ही बात करते हैं, लेकिन वहाँ एक पकड़ने है:

  • movapd और movaps फ्लोटिंग प्वाइंट डोमेन कार्य करते हैं।
  • movdqa पूर्णांक डोमेन

अपने डेटाप्रकार के अनुसार डोमेन बदलते स्टालों से बचने के लिए उचित एक उपयोग में चल रही है।

इसके अलावा, movapd का उपयोग करने का कोई कारण नहीं है। इसके बजाय movaps का उपयोग करें क्योंकि movapd एन्कोड करने के लिए एक अतिरिक्त बाइट लेता है।

+1

movdqa वह है जो मैं देख रहा था :) धन्यवाद। वह जल्दी था :) पीएस। फ्लोटिंग पॉइंट कैसे वास्तव में पूर्णांक से भिन्न होते हैं? मेरे लिए दोनों को सरल प्रतिलिपि बनाना चाहिए ... – lampak

+4

इंटेल प्रोसेसर पर, अलग-अलग एफपी और पूर्णांक इकाइयां हैं। जब आप एक इकाई में एक निर्देश निष्पादित करते हैं, तो उस इकाई को मान स्थानांतरित किया जाता है। लेकिन जब आप उस मूल्य पर किसी भिन्न डोमेन में कोई निर्देश जारी करते हैं, तो उसे 1-2 चक्र जुर्माना के साथ नई इकाई में स्थानांतरित किया जाना चाहिए। इसलिए, यदि संभव हो तो डोमेन में मूल्य रखना सर्वोत्तम होता है - इसलिए अलग-अलग 'mov' निर्देश क्यों हैं। यदि आप पूर्णांक अंकगणित कर रहे हैं और आप 'movaps' का उपयोग करते हैं, तो आप मूल्य को एफपी इकाई में स्थानांतरित करने के लिए दंड का भुगतान करेंगे, और इसे जारी किए गए अगले पूर्णांक निर्देश पर वापस ले जाने के लिए एक और दंड का भुगतान करेंगे। – Mysticial

+1

तार्किक ऑपरेटरों पर भी लागू होता है: जैसे: 'por', 'orps', और' orpd' – Mysticial

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^