2010-07-22 8 views
8

शायद एक सुंदर अस्पष्ट और व्यापक सवाल है, लेकिन सभी सी ++ कंपाइलर्स कोड कोड को संकलित करने से पहले कोड में संकलित करते हैं?क्या सभी सी ++ कंपेलर सी कोड उत्पन्न करते हैं?

+28

नहीं। – GManNickG

+3

सीफ्रंट मेरे दादाजी के लिए काफी अच्छा था और यह मेरे लिए काफी अच्छा है! –

+0

@ टाइटलर "सीफ्रंट 1 9 83 से सी ++ (जिसे" कक्षाओं के साथ सी "के रूप में जाना जाता है) के लिए मूल कंपाइलर था, जिसने सी ++ से सी" –

उत्तर

12

क्योंकि सी कंपाइलर्स लगभग सर्वव्यापी हैं और लगभग हर प्लेटफार्म पर उपलब्ध हैं, प्रक्रिया के बूटस्ट्रैप को उनके विकास में बहुत से (संकलित) भाषाएं इस चरण के माध्यम से जाती हैं।

भाषा विकास के शुरुआती चरणों में यह देखने के लिए कि क्या भाषा व्यवहार्य है, एक कंपाइलर प्राप्त करने का सबसे आसान तरीका एक कंपाइलर बनाना है जो आपकी भाषा को सी में परिवर्तित करता है, फिर देशी सी कंपाइलर को वास्तविक बाइनरी बनाने दें।

इस समस्या के साथ समस्या यह है कि भाषा विशिष्ट संरचनाएं खो जाती हैं और इस प्रकार अनुकूलन के संभावित अवसरों को याद किया जा सकता है, इस प्रकार चरण 2 में अधिकांश भाषाओं को अपना समर्पित संकलक front end मिलता है जो भाषा विशिष्ट संरचनाओं को समझता है और इस प्रकार इनके आधार पर अनुकूलन रणनीतियां प्रदान कर सकता है निर्माण करती है।

सी ++ दो दशक पहले चरण 1 और चरण 2 के माध्यम से चला गया है। तो सी ++ को समर्पित एक कंपाइलर का 'फ्रंट एंड' ढूंढना आसान है और सीधे समर्थित बैक को पारित करने वाला इंटरमीडिएट प्रारूप उत्पन्न करता है। लेकिन आप अभी भी संकलित होने से पहले सी ++ के संस्करणों को खोज सकते हैं जिन्हें सी (मध्यवर्ती प्रारूप के रूप में) में अनुवादित किया जाता है।

7

नहीं। उदाहरण के लिए जीसीसी सी ++ -> असेंबलर से जाता है। आप g ++ के साथ -S विकल्प का उपयोग करके इसे देख सकते हैं।

असल में, अब मुझे लगता है कि, मुझे लगता है कि कोई आधुनिक कंपाइलर एएसएम से पहले सी में जाता है।

+1

Comau सी ++ को सी में संकलित करता है (जो तब बाइनरी में संकलित किया जाता है।) – GManNickG

+0

@GMan वाह! मैंने कभी भी कॉमौ के बारे में नहीं सुना है, और आपने मुझे इसे इस तरह रखने के लिए एक बहुत अच्छा कारण दिया है! – Gianni

+6

@Gianni: असल में Comau आसपास के सबसे अनुपालन कंपाइलरों में से एक माना जाता है। :) (यह सब मुझे पता है हालांकि, इस बात पर कोई सुराग नहीं है कि यह वास्तव में अनुकूलित बाइनरी का उत्पादन कैसे करता है।) – GManNickG

3

सं। सी ++ -> सी केवल सी ++ के विकास और विकास के शुरुआती चरणों में उपयोग किया जाता था। अधिकांश सी ++ कंपाइलर्स आज सीधे असेंबलर या मशीन कोड पर संकलित होते हैं। बोर्लैंड सी ++ सीधे मशीन कोड पर संकलित करता है, उदाहरण के लिए।

1

सं। यह एक मिथक है, इस तथ्य के आधार पर कि स्ट्रॉस्ट्रप के काम का एक प्रारंभिक संस्करण इस तरह से लागू किया गया था। सी ++ कंपाइलर्स लगभग उसी तरह से मशीन कोड उत्पन्न करते हैं जैसे सी कंपाइलर्स करते हैं।

आज, केवल सी ++ संकलक जिसे मैं जानता हूं कि सी कोड बनाता है Comeau है। एम्बेडेड लक्ष्यों के लिए एक या दो और हो सकते हैं, लेकिन यह निश्चित रूप से मुख्यधारा की बात नहीं है।

+1

जैसा कि मैंने गियानी के जवाब पर कहा था, कॉमौ एक काफी मुख्यधारा वाला कंपाइलर है जो सी ++ को सी – GManNickG

+0

@GMan में संकलित करता है: ठीक है, जैसा कि आपने मुझे इसके बारे में अवगत कराया है, मुझे लगता है कि सभी ईमानदारी में मुझे अपना जवाब बदलना है बिट। इसके लिए एक लिंक भी जोड़ा गया। –

-4

यह मानक द्वारा परिभाषित नहीं किया गया है। निश्चित रूप से, सी-स्रोत को संकलित करना इसे करने का एक उचित तरीका है। इसके लिए केवल गंतव्य प्लेटफॉर्म की अनुपालन की उचित डिग्री के साथ सी-कंपाइलर होना आवश्यक है, इसलिए यह चीजों को करने का एक बहुत ही पोर्टेबल तरीका है। नकारात्मक गति तेज है। शायद संकलन गति और शायद निष्पादन गति (उदाहरण के लिए वर्चुअल फ़ंक्शंस के लिए कलाकारों के भार के कारण जो संकलक को पूरी तरह अनुकूलित करने से रोकती है) भुगतना होगा। बहुत समय पहले ऐसी कोई कंपनी नहीं थी जिसकी बहुत अच्छी सी ++ संकलक ठीक से कर रही थी। दुर्भाग्य से, मुझे कंपनी का नाम याद नहीं है और एक छोटा गूगल नाम वापस नहीं लाया। कंपनी का मालिक आईएसओ सी ++ कमेटी में एक सक्रिय भागीदार था और आप सीधे अपने होमपेज पर अपने कोड का परीक्षण कर सकते थे, जिसमें सी ++ के बारे में कुछ अच्छे सभ्य संसाधन भी थे। संपादित करें: मेरे साथी पोस्टरों में से एक ने मुझे याद दिलाया। मैं निश्चित रूप से Comau के बारे में बात कर रहा था।

+0

मुझे लगता है कि आप Comau के बारे में सोच रहे हैं। लगभग चार साल पहले पोस्ट किए गए एक और जवाब में इसका पहले ही उल्लेख किया गया था। –

+1

वाह, मुझे विश्वास नहीं है कि मैंने लगभग 4 साल पहले इस सवाल से पूछा था :)। आपका उत्तर वास्तव में इस धागे में कुछ भी नहीं जोड़ रहा है। – TripShock

+0

आप के बीच फोकस का उल्लेख करते हुए, और हर कोई इसका जिक्र करता है: आपने इसे मरने के एक साल बाद किया था। – IInspectable

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