2012-10-09 12 views
7

विजुअल स्टूडियो 2010/2012 का उपयोग करके, कोई परिणामस्वरूप कोड के असेंबली आउटपुट उत्पन्न करने के लिए /FAs स्विच के साथ एक सी ++ स्रोत फ़ाइल संकलित कर सकता है। लेकिन जेनरेट एएसएम फ़ाइल में उनके प्रतीक रूप में सभी प्रतीकों हैं।विजुअल स्टूडियो असेंबलर आउटपुट में नामों को कैसे डिमंगल करें?

क्या विज़ुअल स्टूडियो को इसके बजाय असंगत प्रतीकों को उत्पन्न करने के लिए कोई स्विच या अन्य स्मार्ट तरीका है? मुझे पता है कि कोई व्यक्ति undname.exe के माध्यम से एएसएम फ़ाइल मैन्युअल रूप से खिला सकता है लेकिन कस्टम पोस्ट-बिल्ड इवेंट की तुलना में एक स्विच अधिक सुविधाजनक होगा।

+0

यह उपलब्ध नहीं है। –

+0

बाहरी सी के बारे में क्या? – NoSenseEtAl

उत्तर

0

यदि आपके सभी प्रतीकों बाहरी "सी" के साथ संगत हैं, तो आप अपने सभी कोड को सी ++ स्रोत फ़ाइल में बाहरी "सी" ब्लॉक में लपेट सकते हैं ताकि सभी प्रतीकों को असंगत सी शैली में उत्सर्जित करने के बजाय मजबूर किया जा सके। सी ++ नाम मैंगलिंग लागू।

माइक्रोसॉफ्ट रिसर्च प्रोजेक्ट http://en.wikipedia.org/wiki/Phoenix_%28compiler_framework%29 टूलचैन में हुक प्रदान करता है और यह प्रतीक नामों के गठन के प्रत्यक्ष हेरफेर की अनुमति दे सकता है, लेकिन दुर्भाग्यवश इसकी आखिरी सार्वजनिक रिलीज वीएस 2008 के लिए थी और ऐसा लगता है कि इसमें शामिल होने के लिए उत्पादित नहीं किया गया है या तो वीएस 2010 या वीएस 2012.

+0

दुर्भाग्यवश, मेरे कई प्रतीकों 'बाहरी' सी ''के साथ संगत नहीं हैं। – Bloops

1

/एफए के आउटपुट की प्रकृति के कारण ऐसा करना संभव नहीं है। एफए वैध असेंबली कोड outputs। प्रतीकों को एक सी ++ फ़ंक्शन को असम्बद्ध करने की आवश्यकता होती है जो कि माइक्रोसॉफ्ट के x86 असेंबली में मान्य लेबल नाम नहीं हैं। अज्ञात नेमस्पेस के लिए कोई अच्छी सूचना भी नहीं है।

उन मामलों को संभालने वाला कोई भी आउटपुट असेंबलर का उपयोग करके संकलित नहीं होगा। यदि आपने ऐसे नामों को संभालने वाले एक असेंबलर को बनाया है, तो उसे यह जानने की आवश्यकता होगी कि किसके नाम को लागू करने के लिए लागू नियम लागू हैं। यह असेंबली आउटपुट के मुख्य उद्देश्य को हरा देता है (यह देखने के लिए कि क्या हो रहा है)।

संबंधित मुद्दे