प्रत्येक एएसएम निर्देश का आकार क्या है? हर निर्देश कितने बाइट लेता है? 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: एमएसवीसी ++ पहली पंक्ति पर एक त्रुटि झेलता है, क्योंकि यह कहता है कि ईआईपी अनिर्धारित है। यह ईएक्स, एएसपी, ईबीपी, आदि के लिए काम करता है। मैं गलत क्या कर रहा हूं?
इस प्रश्न के पास C++ से कोई लेना देना नहीं है, इसलिए टैग हटा दिया गया है। –
इसे धक्का ईप + 2 होना चाहिए, धक्का नहीं [ईआईपी + 2]। –
"पुश ईप" काम नहीं करता है। –