द्वारा संकलित NOP
अनुदेश XCHG AX, AX
है कोड।
(असल में, मुझे लगता है कि एक असेंबलर अपने साथ किसी रजिस्टर के
xchg
का उपयोग कर सकता है, लेकिन
AX
या
EAX
आमतौर पर
nop
के लिए उपयोग किया जाता है जो मुझे पता है)।
xchg ax, ax
में कोई पंजीकरण मूल्य बदलने और कोई झंडे बदलने की संपत्ति नहीं है (हे - यह कोई ऑप नहीं है!)।
संपादित (Anon द्वारा एक टिप्पणी के जवाब में।):
ओह सही - अब मुझे याद है xchg
शिक्षा के लिए कई एनकोडिंग देखते हैं। कुछ बिट्स का एक mod / r/m सेट लेते हैं (जैसे कई इंटेल x86 आर्किटेक्चर निर्देश) जो एक स्रोत और गंतव्य निर्दिष्ट करते हैं। उन एन्कोडिंग में एक से अधिक बाइट लेते हैं। एक विशेष एन्कोडिंग भी है जो एक बाइट का उपयोग करती है और (E)AX
के साथ एक सामान्य उद्देश्य रजिस्टर का आदान-प्रदान करती है। यदि निर्दिष्ट रजिस्टर (E)AX
मुर्गी है तो आपके पास एकल-बाइट एनओपी निर्देश है। आप यह भी निर्दिष्ट कर सकते हैं कि (E)AX
xchg
निर्देश के बड़े संस्करण का उपयोग करके स्वयं के साथ आदान-प्रदान किया जा सकता है।
मेरा अनुमान है कि कि MSVC (E)AX
स्रोत और गंतव्य जब यह कोई ऑपरेशन के लिए एक से अधिक बाइट ऊपर चबाना करना चाहता है के रूप में साथ xchg
के कई बाइट संस्करण का उपयोग करता है - यह चक्र का एक ही नंबर एक बाइट xchg
के रूप में लेता है , लेकिन अधिक जगह का उपयोग करता है। डिस्सेप्लर में आपको के रूप में डीकोड किए गए एकाधिक बाइट xchg
दिखाई नहीं देंगे, भले ही परिणाम समान हो।
विशेष रूप xchg eax, eax
या nop
opcodes 0x90
या 0x87 0xc0
आप इसे 1 या 2 बाइट्स का उपयोग करना चाहते हैं पर निर्भर करता है के रूप में एन्कोड किया जा सकता है। विजुअल स्टूडियो डिस्सेबलर (और शायद अन्य) ओपोड 0x90
को NOP
निर्देश के रूप में डीकोड करेगा और 0x87 0xc0
को xchg eax, eax
के रूप में ऑपोडोड डीकोड करेगा।
यह थोड़ी देर के बाद से मैं विस्तृत विधानसभा भाषा काम किया है हो गया है इसलिए संभावना है कि मैं कम से कम एक गिनती यहाँ पर गलत हूँ रहे हैं ...
स्रोत
2010-01-25 22:13:49
इन निर्देशों का एक ही साथ जुड़े बाइट्स कर रहे हैं? एनओपी हेक्स 90 होना चाहिए। xchg कुल्हाड़ी है, एक 2 बाइट निर्देश कुल्हाड़ी? –
यह मूल रूप से सोचा (या फिर भी याद किया गया) की तुलना में थोड़ा और अधिक ज्ञान के साथ एक प्रश्न बन गया। –
अरे क्या आप मुझे बता सकते हैं कि आपके जैसे असेंबली कोड को कैसे देखें। मैं देखना चाहता हूं कि कैसे एक साधारण प्रोजेम को असेंबली में परिवर्तित किया जाता है। धन्यवाद – masfenix