2009-09-09 10 views
10

प्रत्येक एएसएम निर्देश का आकार क्या है? हर निर्देश कितने बाइट लेता है? 8 बाइट्स? ऑर्डर के लिए चार और तर्क के लिए चार? क्या होता है जब आपके पास mov में एक ओपोड और 2 तर्क होते हैं, उदाहरण के लिए? क्या उनके पास स्मृति में एक निश्चित आकार है या क्या वे भिन्न होते हैं? क्या ईआईपी के पास इसके साथ कुछ करने का अधिकार है, इसका मूल्य हमेशा एक द्वारा बढ़ाया जाता है, यह पूरी तरह से स्वतंत्र है कि यह किस प्रकार के निर्देश से गुज़र रहा है?प्रत्येक एएसएम निर्देश का आकार क्या है?

मैं यह पूछता हूं कि जब मैं http://en.wikibooks.org/wiki/X86_Disassembly/Functions_and_Stack_Frames पढ़ रहा था, तो मैंने इस तथ्य को ठोकर दिया कि ऐसा लगता है कि एक कॉल निर्देश एक पुश और जेएमपी निर्देश के बराबर है।

call MYFUNCTION 
mov my_var, eax 

जब हम, स्टैक पर [EIP + 2] धक्का कर रहे हैं करने के लिए क्या मूल्य हम तो इशारा कर रहे हैं के रूप

push [eip + 2]; 
jmp MYFUNCTION; 
mov my_var, eax 

ही किया जा रहा है? "Jmp MYFUNCTION" के बगल में लाइन पर, my_var eax mov, right?

ps: एमएसवीसी ++ पहली पंक्ति पर एक त्रुटि झेलता है, क्योंकि यह कहता है कि ईआईपी अनिर्धारित है। यह ईएक्स, एएसपी, ईबीपी, आदि के लिए काम करता है। मैं गलत क्या कर रहा हूं?

+0

इस प्रश्न के पास C++ से कोई लेना देना नहीं है, इसलिए टैग हटा दिया गया है। –

+0

इसे धक्का ईप + 2 होना चाहिए, धक्का नहीं [ईआईपी + 2]। –

+0

"पुश ईप" काम नहीं करता है। –

उत्तर

16

मशीन निर्देश का आकार प्रोसेसर आर्किटेक्चर पर निर्भर करता है - निश्चित आकार निर्देश के साथ आर्किटेक्चर हैं, लेकिन आप स्पष्ट रूप से आईए -32 और इंटेल 64 को प्रतिबिंबित कर रहे हैं और वे दृढ़ता से निर्देश की लंबाई की पूर्ति कर रहे हैं। निर्देश सूचक निश्चित रूप से संसाधित निर्देश की लंबाई से हमेशा बढ़ता है।

आप इंटेल से IA-32 and Intel 64 manuals डाउनलोड कर सकते हैं - इसमें आर्किटेक्चर के बारे में आप लगभग हर चीज को जानते हैं। आप पृष्ठ 623 से 768 पर Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2B: Instruction Set Reference, N-Z में एक ऑपोड मानचित्र और निर्देश सेट प्रारूप पा सकते हैं।

+1

यदि प्रत्येक निर्देश की एक अलग लंबाई है, तो हम कैसे, या यहां तक ​​कि कंप्यूटर, स्मृति में जानते हैं कि एक निर्देश क्या है और एक तर्क क्या है? यदि प्रत्येक निर्देश का आकार समान होता है, तो कंप्यूटर यह जान लेगा कि, मान लें कि प्रत्येक 4 बाइट एक नए निर्देश से मेल खाते हैं। लेकिन अगर उनका आकार बदलता है, तो यह सच नहीं है। प्रत्येक निर्देश के अंत में (या शुरुआत!) कोई विशेष बाइट या कुछ है? धन्यवाद –

+7

बिल्कुल। पहले बाइट में यह निर्धारित करने के लिए पर्याप्त जानकारी शामिल है कि कोई दूसरा बाइट पढ़ा जाना चाहिए और दूसरा बाइट यह निर्धारित करने की अनुमति देता है कि निर्देश में तीसरा बाइट है और इसी तरह। बस निर्देश कोड तालिकाओं पर एक नज़र डालें। –

+3

@devoured elysium, * विशेष * बाइट्स (ऑपकोड) हैं जो विस्तारित निर्देशों को इंगित करते हैं। –

2

मशीन कोड का आकार प्रोसेसर के आर्किटेक्चर पर निर्भर करता है।

उदाहरण के लिए, IA-32 पर, निर्देश का आकार 1 से 6 बाइट्स (या अधिक) से भिन्न होता है।

+0

जब आप कहते हैं कि निर्देश आकार विभिन्न कंप्यूटरों पर 1 से 6 बाइट्स से भिन्न होता है या उसी कंप्यूटर पर, कुछ निर्देश दूसरों की तुलना में बड़ा हैं? पाठ्यक्रम के उसी कंप्यूटर पर –

+1

। हां, कई बाइट्स से एक निर्देश बनाया जा सकता है। –

+2

मुझे यकीन नहीं है कि आपका मतलब "1 से 6 या उससे अधिक" का क्या मतलब है, लेकिन x86 निर्देश 6 बाइट्स –

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