कोई बता सकता है कि निम्न कोड क्या करता है?यह x86 असेंबली निर्देश क्या करता है (जोड़ा xmm0, डीएस: __ xmm @ 41f00000000000000000000000000000 [edx * 8])?
addsd xmm0, ds:[email protected][edx*8]
मैं लगा कि कुछ मूल्य रजिस्टर xmm0 फ्लोट करने के लिए जोड़ा जाता है, लेकिन __xmm का अर्थ @ 41f00000000000000000000000000000 निरंतर क्या है? क्या कोई दस्तावेज है जहां मैं इसके बारे में पढ़ सकता हूं?
यहाँ है कि मैं समझने की कोशिश कर रहा हूँ कोड का पूरा टुकड़ा है:
cvtsi2sd xmm0, [ebp+var_2C8]
mov edx, [ebp+var_2C8]
shr edx, 1Fh
addsd xmm0, ds:[email protected][edx*8]
ईबीपी + var_2C8 अहस्ताक्षरित पूर्णांक मान है।
- ईबीपी + var_2C8 फ्लोट करने के लिए परिवर्तित और xmm0 रजिस्टर करने के लिए
- ईबीपी ले जाया + var_2C8 EDX और सही 31 बिट
- कुछ इस स्थानांतरण से प्राप्त द्वारा स्थानांतरित करने के लिए ले जाया जाता है है xmm0 में जोड़ा जाता है।
xmm0 में वास्तव में क्या जोड़ा गया है? क्या इस गणना के लिए कोई संभावित उद्देश्य है?
अद्यतन।
यहाँ इस कोड के लिए कच्चे disassembly है:
cvtsi2sd xmm0,dword ptr [ebp-2C8h]
mov edx,dword ptr [ebp-2C8h]
shr edx,1Fh
addsd xmm0,mmword ptr [edx*8+2685CC0h]
लगता स्थिरांक की सरणी से कुछ डबल मूल्य की तरह xmm0 में जोड़ा जाता है ...
यह एक लुकअप टेबल या सरणी है। मूर्खतापूर्ण स्थिरता केवल आपके डिस्सेबलर का एक उत्पाद है (एक प्रतीक भी हो सकता है), वास्तविक पता देखने के लिए कच्चे डिस्सेप्लर को देखें। – Jester