2010-08-28 4 views
7

मैं डी प्रोग्रामिंग भाषा के बारे में एंड्री अलेक्जेंड्रेस्कू से पुस्तक पढ़ रहा हूं। वह एक उत्कृष्ट लेखक हैं और डी भाषा के पहलुओं को समझाने में एक बहुत अच्छी नौकरी करते हैं। हालांकि मुझे कुछ समझने में कठिनाई होती है जब मैं एएसएम आउटपुट या कुछ कीवर्ड (जैसे इन, आउट, इत्यादि या अन्य संरचनाओं) के परिणामों की कल्पना नहीं कर सकता। भले ही मेरा एएसएम बहुत खराब है और मैं इसका कभी भी उपयोग नहीं करता हूं, यह मुझे समझने में सक्षम बनाता है कि कुछ कीवर्ड कंप्यूटर पर कैसे काम करते हैं और काम किया जा रहा है।डिजिटल मंगल डी संकलक; एएसएम आउटपुट प्राप्त करना

डीएमडी कंपाइलर में कई रोचक विशेषताएं हैं (कोड कवरेज, इंटरफेस उत्पन्न करना (हेडर फाइलें), दस्तावेज उत्पन्न करना, प्रोफाइलिंग, ...) लेकिन मैंने एएसएम कोड आउटपुट में स्विच नहीं देखा है। कंपाइलर .obj फ़ाइलों को उत्पन्न करता है, और निम्न लिंक पढ़ने से: http://www.digitalmars.com/ctg/obj2asm.html मुझे संदेह है कि मुझे ऑब्जेक्ट फ़ाइलों को मैन्युअल रूप से परिवर्तित करने के लिए एक टूल की आवश्यकता है। मैं एक कंपाइलर स्विच पसंद करेंगे, क्या कोई है?

कि पृष्ठ के तल पर, मैं एक पृष्ठ जहाँ मुझे लगता है कि उपकरण युक्त उल्लेख उत्पादों के लिए भुगतान कर सकते हैं से जुड़ा हुआ मिलता है। एक जीएनयू पृष्ठभूमि से आ रहा है मैं उस पर बहुत डूब गया। क्या यह केवल सी/सी ++ के लिए है, या यह डी कंपाइलर के लिए भी लागू होता है?

क्या इन .obj फ़ाइलों को पठनीय एएसएम कोड में परिवर्तित करने का कोई अन्य तरीका है, या क्या मुझे एएसएम आउटपुट प्राप्त करने के लिए अन्य डी कंपाइलर्स (जैसे जीडीसी या एलडीसी) का सहारा लेना चाहिए? मैं नहीं करना पसंद करता हूँ। डीएमडी खुद संस्थापक द्वारा बनाया गया है, मुझे यकीन है कि उसने अधिकांश सुविधाओं को सही ढंग से/बड़े पैमाने पर अनुकूलित किया है।

तो, मैं एएसएम कोड पर एक झांक कैसे ले सकता हूं?

धन्यवाद।

+3

साथ ही, डीएमडी डी के लिए पूर्ण समर्थन के साथ ही संकलक है 2.0 – You

उत्तर

7

आप objconv की कोशिश कर सकते। मैं यही उपयोग करता हूं। कारण डीएमडी एक स्विच के माध्यम से असेंबलर आउटपुट नहीं करता है क्योंकि यह एएसएम को एक अलग कदम के रूप में कभी नहीं उत्पन्न करता है। यह सीधे अपने आंतरिक प्रतिनिधित्व से बाइनरी ऑपकोड उत्पन्न करता है। यह कारण है कि यह इतनी तेजी से संकलित क्यों है।

या आप डीएमडी obj2asm उपकरण जो डीएमडी के साथ पैक आता है का उपयोग कर सकते हैं।

obj2asm somefile.o > somefile.s 
+1

धन्यवाद, यह मुझे वास्तव में एएसएम आउटपुट देता है। –

+1

क्या एएसएम आउटपुट को केवल उस कोड पर कम करने का कोई तरीका है जिसे मैंने स्वयं लिखा था? फिलहाल ऑब्जेक्ट फ़ाइल को डी के पुस्तकालय में स्थाई रूप से जोड़ा गया है, क्या यह संभव है या क्या मुझे इसके साथ रहना चाहिए? –

+0

@ डेवियस: शायद आप यहां बहुत कुछ नहीं कर सकते हैं।ये टेम्पलेट इंस्टॉलेशन होना चाहिए, क्योंकि शेष फोब्स को उसी ऑब्जेक्ट फ़ाइल में समाप्त नहीं होना चाहिए क्योंकि यह अलग से संकलित है। – dsimcha

-1

डिजिटल मंगल ग्रह संकलक के बैकएंड व्यावसायिक रूप से लाइसेंस प्राप्त है, खुला स्रोत नहीं है, शायद का कारण बताते हुए बैकएंड उत्पादन से संबंधित उपकरण भी मालिकाना हैं।

शैक्षिक उद्देश्यों के लिए आप http://dgcc.sourceforge.net/ जो जीसीसी बैकएंड पर एक डी सामने अंत है, इस प्रकार पूरी तरह से खुला स्रोत की कोशिश हो सकती है।

+1

सभी डिजिटल मंगल ग्रह compilers (AFAIK) मुक्त करने के लिए उपलब्ध हैं; और संदर्भ डी कंपाइलर (डीएमडी) एक जीपीएल लाइसेंस के तहत है। उनके अधिकांश उपकरण भी हैं। – You

+1

केवल फ्रंट एंड जीपीएल है। बैक एंड वाणिज्यिक रूप से लाइसेंस प्राप्त है। –

+0

@ पीटर अलेक्जेंडर लेकिन [स्रोत कोड] (https://github.com/D-Programming-Language/dmd/tree/master/src/backend) फिर भी उपलब्ध है। –

9

obj2asm उपयोगिता डीएमडी संकलक सुइट, जो मुफ्त में उपलब्ध है (एक दोहरी GPL और कलात्मक लाइसेंस के तहत) द्वारा प्रदान किया जाता है। डी प्रोग्रामिंग भाषा वेबसाइट पर DMD Compiler for Linux देखें।

+1

धन्यवाद, इस प्रकार एक लिनक्स ओएस को एएसएम स्रोत (या कुछ अन्य उपकरण) प्राप्त करने की आवश्यकता होगी? मुझे यकीन नहीं है कि यह केवल लिनक्स क्यों है ... –

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