निर्देश और डेटा को मेमोरी में कैसे संग्रहीत किया जाता है? [बन्द है]


-4

मैं एक C # प्रोग्राम डिबगिंग कर रहा हूं और डिसएस्पेशन व्यू इसे दिखाता है:

0x006E2813 पॉप
ईबेक्स 0x006E2814 पॉप ईएसआई

तो pop ebx1 बाइट (एक एकल पते में) में संग्रहीत किया जाता है, लेकिन यह कैसे हो सकता है क्योंकि popनिर्देश स्वयं 1 बाइट बड़ा है?

या यह केवल डेटा ( ebx) दिखाता है , इसलिए निर्देश कहाँ संग्रहीत हैं?

जवाबों:


0

पॉप निर्देश के बाद से 1 बाइट बड़ी कैसे हो सकती है?

यह अलग-अलग बाइट्स के लिए एन्कोडेड है, जिसके आधार पर यह रजिस्टर का उपयोग करता है। pop ebx0x5B है, pop esi0x5E है। कई वेबसाइट और मैनुअल x86 निर्देश एन्कोडिंग का दस्तावेजीकरण कर रहे हैं।


1
असेंबली भाषा आम तौर पर बाइट्स का उपयोग ऑपरेंड के रूप में "तत्काल" मान रखने के लिए करती है, वे मान जो एक मेमोरी लोकेशन हैं, या मान जो इसके लिए पॉइंटर हैं। रजिस्टर स्मृति में नहीं रहते हैं, और x86 के पास रजिस्टर को संदर्भित करने के लिए पूरी तरह से कुशल 8-बिट बाइट का उपयोग करने के लिए पर्याप्त रजिस्टर नहीं है (आपके पास बहुत सारे व्यर्थ बिट्स होंगे), इसलिए यह उन्हें एन्कोड करने के लिए समझ में आता है निर्देश के भाग के रूप में।
LawrenceC
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.