सरल शब्दों में:
कॉल पता
यह ढेर पर अद्यतन कार्यक्रम काउंटर (जो call
के बाद शिक्षा के लिए अंक) आ जाएगी तो पता संकेत दिया के लिए कूद (मोड को संबोधित करना लागू हो सकता है)।
सेवानिवृत्त
यह निर्देश आंतरिक रूप से पॉप और ढेर बंद का पता और इसे करने के लिए कूदता है। यह अच्छी तरह से call
से मेल खाता है ताकि यह पूर्व call
के बाद निर्देश पर वापस जा सके।
JMP पता
यह केवल दिया पता लिए कूदता है (को संबोधित मोड आवेदन कर सकते हैं)। यह ढेर के साथ कुछ भी नहीं करता है।
तो, आप भी ऐसा कर सकते हैं:
push address
ret
जो पॉप और पता कि ढेर पर धकेल दिया गया जैसा कि ऊपर वर्णित पर चला जाएगा। यह एक माइक्रोप्रोसेसर में अप्रत्यक्ष कूद करने का एक चालाक तरीका है जो अपने कूद निर्देशों में अप्रत्यक्ष पते मोड का समर्थन नहीं करता है।
अनुक्रम:
push address
jmp someplace
बस कूद जाएगा किसी ऐसे स्थान को और नहीं ढेर प्रभावित या पता कि ढेर पर धकेल दिया गया का उपयोग करें। यदि पताjmp
के बाद निर्देश है, तो यह लगभग call someplace
के बराबर है।
निर्देश सेट कि एक अप्रत्यक्ष को संबोधित कूद का समर्थन नहीं करते के लिए, मैं इस अच्छी छोटी काम के आसपास देखा है:
push address
ret
कौन सा कूद जाएगा जो कुछ भी करने के लिए address
है।
लेखक की असामान्य विविधता अक्सर उपयोग की जाती है जब लेखक कोड की वास्तविक कार्यक्षमता को अस्पष्ट करना चाहता है (उदाहरण के लिए, मैलवेयर और "कॉपी-संरक्षित" वाणिज्यिक सॉफ़्टवेयर)। –
अनिवार्य रूप से 'पॉप' नहीं है और पॉप किए गए पते पर अप्रत्यक्ष कूदता है? –
@ जोहान हास्कल हाँ यह है ... "डुह" मेरे हिस्से पर। : पी मैं सोच रहा था "नहीं 'कॉल, नहीं' ret' '। :) – lurker