xtofl के स्पष्टीकरण के अतिरिक्त आप x86 calling conventions की इस तालिका को देखना चाहेंगे। तर्क आदेश के संबंध में आप क्या ध्यान देंगे कि तर्कों के लगभग सभी पास्कल के अपवाद के साथ दाएं से बाएं (दाएं सबसे पहले तर्क को धक्का दिया जाता है) पर धक्का दिया जाता है।
एक और परिदृश्य xtofl कवर नहीं करता है पंजीकरण तर्क हैं - कुछ एबीआई को यह आवश्यक है कि कुछ तर्क में हैं, जो स्टैक पर के विपरीत हैं। एक x86_64
प्रणाली पर, उदाहरण के लिए, समारोह:
int add3(int a, int b, int c)
डाल देंगे तर्क:
mov rdi, [source-of-a]
mov rsi, [source-of-b]
mov rdx, [source-of-c]
call add3
तो रजिस्टरों:
a -> rdi
b -> rsi
c -> rdx
विशेष रूप से, यह (इंटेल सिंटेक्स) कैसा लगेगा रजिस्टर सूची से बाएं से दाएं से भरे हुए हैं और फिर स्टैक का उपयोग दाएं से बाएं।
xtofl कहते हैं, यह कोई बात नहीं तुम क्या प्रदान की है फोन करने वाले और कॉल प्राप्त करने वाला सहमत हूँ - स्पष्ट रूप से, हालांकि, अगर फोन करने वाले और कॉल प्राप्त करने वाला असहमत असंगति समस्याओं का कारण है कि और यह वास्तव में एक चिंता का विषय नहीं है केवल असेंबलर के लिए, लेकिन उच्च स्तर की भाषाओं के लिए भी - सौभाग्य से, कंपाइलर्स काफी हद तक बाएं काम करते हैं। आगे पढ़ने के लिए, आपको स्टैक रोचक का कैली/कॉलर क्लीनअप मिल सकता है - और ध्यान दें कि इसे x86_64
के लिए एक विधि के लिए कैसे मानकीकृत किया गया था।
आप नहीं कहते कि आप x86
का उपयोग कर रहे हैं - आपके आर्किटेक्चर में निश्चित रूप से मानक कॉलिंग सम्मेलन होगा क्योंकि इसके बिना काम करना मुश्किल है।
स्रोत
2012-02-04 14:51:51
आप दोनों के लिए बहुत बहुत धन्यवाद। यह बहुत उपयोगी था और अब मैं इसे बेहतर समझता हूं! धन्यवाद एक मिल !! – Axolotl