2011-12-07 14 views
7

किसी को भी अप्रत्यक्ष समारोह के बारे में 86 विधानसभा में कहता है, अर्थात निर्देश86 विधानसभा अनुदेश: कॉल * रेग

call *Reg 

तो जहां समारोह लेबल के पते एक रजिस्टर में संग्रहित है की तरह मुझे कुछ जानकारी दे सकते हैं। किसी भी तरह से मैं Google के माध्यम से इसके बारे में जानकारी नहीं मिल सका।

और इसके अलावा, यदि कोई ऐसा x86 असेंबली प्रोग्राम चलाते समय मुझे ट्रेस/ब्रेकपॉइंट अपवाद मिलता है तो इसका क्या अर्थ है?

उत्तर

6

इंटेल और एएमडी x86 के संबंध में बहुत अच्छा दस्तावेज प्रकाशित करते हैं। इंटेल निर्देश सेट संदर्भ का एक लिंक यहां है (बेशक) के पास कॉल पर एक अनुभाग है। http://www.intel.com/design/intarch/manuals/243191.HTM

OP Code: FF /2 
Instruction: CALL r/m32 
Description: Call near, absolute indirect, address given in r/m32 

एनएएसएम वाक्य रचना

lbl_start: 
MOV EAX, lbl_function1 
CALL EAX 
RETN 

lbl_function1: 
MOV EAX, 1 
RET 0 

का उपयोग करके आप एक अपवाद यह लगभग कुछ भी मतलब हो सकता है मिल रहे हैं। यहाँ कुछ आम मुद्दों है ...

  • आप इस कार्यक्रम
    • आप रजिस्टर मूल्य स्थापित कर रहे हैं लेकिन यह एक API कॉल कि पहले होता है द्वारा बदला जा रहा है के भीतर एक पते पर रजिस्टर की स्थापना नहीं कर रहे हैं अपने कॉल reg32
    • आप बल्कि पता ही
  • आप ओपी कोड reg32 अपने कॉल गलत तरीके से एन्कोडिंग रहे हैं की तुलना में एक विशिष्ट पते पर स्थित आंकड़ों के रजिस्टर मूल्य स्थापित कर रहे हैं, (पूर्व: एफएफ D0 कॉल है हेक्स में ईएक्स)
संबंधित मुद्दे