मानसिक रूप से, मैंने हमेशा सोचा है कि सी ++ संकलन इसे असेंबलर में अनुवाद करते समय दृश्यों के पीछे कैसे दिखें/फेंक/पकड़ते हैं। लेकिन चूंकि मैंने इसका कभी भी उपयोग नहीं किया है, इसलिए मैं इसे जांचने के लिए कभी नहीं मिला (कुछ लोग आलसी कहेंगे)।सी ++ कोशिश/फेंक/पकड़ => मशीन कोड
क्या सामान्य स्टैक try
एस का ट्रैक रखने के लिए उपयोग किया जाता है, या अकेले इस उद्देश्य के लिए एक अलग प्रति थ्रेड स्टैक रखा गया है? क्या एमएसवीसी और जी ++ के बीच कार्यान्वयन बड़ा या छोटा है? कृपया मुझे कुछ छद्म एएसएम दिखाएं (आईए -32 भी ठीक है) इसलिए मुझे इसे खुद से जांचना नहीं है! :)
संपादित करें: अब मुझे आईए -32 हैंडलिंग पर एमएसवीसी के कार्यान्वयन की मूल बातें मिलती हैं। किसी को भी आईए -32, या उस मामले के लिए कोई अन्य सीपीयू पर g ++ के लिए पता है? How a C++ compiler implements exception handling
इसमें विंडोज संरचित अपवाद हैंडलिंग शामिल है, जो कि संबंधित है, लेकिन सी ++ अपवाद हैंडलिंग के समान नहीं है।पिट्रेक ने परिचय में उल्लेख किया है कि सी ++ अपवाद, जैसा कि माइक्रोसॉफ्ट और बोर्लैंड द्वारा कार्यान्वित किया गया है, एसईएच का उपयोग करते हैं, लेकिन उनके लेख में यह शामिल नहीं है कि वे इसे कैसे कार्यान्वित करते हैं। –
ग्रेट एमएसवीसी/आईए -32 लेख, हालांकि लंबा। –
सी ++ अपवाद केवल सीईएच अपवादों का एक वर्ग है, जिसमें एक रैपर के साथ सी ++ जानकारी (अपवाद वर्ग उदाहरण) शामिल है। सी ++ अपवादों को एसईएच का उपयोग करना है ताकि वे कर्नेल सीमाएं इत्यादि का प्रचार कर सकें। –