2010-11-14 26 views
16

मैंने कक्षा के लिए एक सी से एमआईपीएस रूपांतरण पूरा किया, और मैं इसे असेंबली के खिलाफ जांचना चाहता हूं। मैंने सुना है कि जीसीसी को कॉन्फ़िगर करने का एक तरीका है ताकि यह x86 आर्किटेक्चर (मेरे कंप्यूटर उपयोगकर्ता इंटेल i5 प्रोसेसर) की बजाय एम कोड आर्किटेक्चर में सी कोड को परिवर्तित कर सके और आउटपुट प्रिंट कर सके।क्या सी से एमआईपीएस को परिवर्तित करने के लिए जीसीसी का उपयोग करने का कोई तरीका है?

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

संपादित करें: मुझे स्पष्टीकरण दें। कृपया इसे पढ़ें। मैं नहीं देख रहा हूं कि किस कंपाइलर का उपयोग करना है, या लोग कह रहे हैं "अच्छी तरह से आप क्रॉस-संकलन कर सकते हैं, लेकिन इसके बजाय आपको इस अन्य चीज़ का उपयोग करना चाहिए जिसमें सेट अप करने के बारे में कोई निर्देश नहीं है।"

यदि आप इसे पोस्ट करने जा रहे हैं, तो कम से कम मुझे निर्देशों का संदर्भ लें। जीसीसी उबंटू के साथ आया था। मुझे कंपाइलर्स को कैसे इंस्टॉल करना है और जीसीसी के अलावा किसी अन्य चीज़ के लिए ऑनलाइन ट्यूटोरियल ढूंढना आसान नहीं है। फिर क्रॉस-कंपाइलिंग का मामला भी मुझे इसके बारे में जानने की जरूरत है। धन्यवाद।

+3

आप शायद सिर्फ "संकलन" के बजाय "कन्वर्ट" चाहते हैं। संकलक हमेशा एक भाषा को दूसरे में परिवर्तित करता है। आप 86 बंध पर चलाते हैं, यह आम तौर पर अपने ओएस के लिए उपयुक्त एक 86 निष्पादन करने के लिए अपने स्रोत भाषा बदलता है, लेकिन compilers अपने मेजबान ओएस और वास्तुकला ... – dmckee

+0

हाँ, यह एक तरह से मैं क्या पूछ रहा हूँ है लक्षित करने के लिए सीमित नहीं हैं। शब्दावली के मेरे उपयोग को सही करने के लिए धन्यवाद, लेकिन क्या आप वास्तविक प्रश्न का उत्तर दे सकते हैं? – Mike

उत्तर

2

आपको स्रोत को binutils और gcc-core में डाउनलोड करना होगा और ../configure --target=mips ... जैसे कुछ के साथ संकलित करना होगा। आपको एक विशिष्ट एमआईपीएस लक्ष्य चुनने की आवश्यकता हो सकती है। फिर आप mips-gcc -S का उपयोग कर सकते हैं।

+0

क्या आप कृपया थोड़ा और समझा सकते हैं। मुझे सी से एमआईपीएसआर 3000 में कनवर्ट करने की भी आवश्यकता है। –

+0

@ShankhadeepMukerji https://gcc.gnu.org/install/ पर देखें। चरण 3 के तहत "लक्ष्य विनिर्देश" देखें। –

5

यह एक कॉन्फ़िगरेशन चीज़ नहीं है, आपको जीसीसी के एक संस्करण की आवश्यकता है जो एमआईपीएस को पार-संकलित करता है। इसके लिए एक विशेष जीसीसी निर्माण की आवश्यकता है और काफी स्थापित करने के लिए बालों वाली है (बिल्डिंग जीसीसी दिल की बेहोशी के लिए नहीं है)।

मैं इसके लिए LCC का उपयोग करने की सलाह दूंगा। एलसीसी के साथ जीसीसी के साथ क्रॉस-संकलन करना आसान तरीका है, और एलसीसी का निर्माण मौजूदा मशीनों पर सेकंड का मामला है।

+1

त्वरित प्रतिक्रिया के लिए धन्यवाद, लेकिन यह मेरे प्रश्न को खारिज कर देता है। आप मुझे बता रहे हैं कि मुझे आम तौर पर क्या करना चाहिए (क्रॉस-कंपाइलिंग?), और फिर मुझे एक अलग कंपाइलर को निर्देशित करना। मैं विस्तार से पूछ रहा हूं कि जीसीसी के उस संस्करण को कैसे प्राप्त करें और किस आदेश का उपयोग करना है, न कि मुझे जीसीसी या एक अलग कंपाइलर का उपयोग करना चाहिए। फिर इस कंपाइलर को स्थापित करने का मामला है, जिसके लिए एलसीसी साइट पर कोई भी निर्देश नहीं है। – Mike

+5

मैं मान रहा था कि आपकी मुख्य रुचि सी से एमआईपीएस असेंबली को संकलित कर रही थी, जीसीसी के साथ ऐसा नहीं कर रही थी। यदि आप इसके लिए जीसीसी का उपयोग करने का आग्रह करते हैं, तो आगे बढ़ें, लेकिन स्वयं को चेतावनी दीजिए - केवल एक कार्यक्रम को संकलित करने के लिए यह उचित नहीं है (विशेष रूप से यदि आप निर्माण करने के लिए एलसीसी प्राप्त करने के साथ संघर्ष करते हैं)। कुछ (अपेक्षाकृत पुरानी, ​​लेकिन मुझे कुछ भी नया नहीं मिला) क्रॉस जीसीसी बनाने के निर्देश यहां हैं: http://gcc.gnu.org/wiki/Building_Cross_Toolchains_with_gcc –

+1

मेरी गलती। मुझे लगता है कि मैंने आपके जवाब को गलत समझा। हां मेरी दिलचस्पी सी से एमआईपीएस में परिवर्तित हो रही है। लेकिन अगर आप एक अलग संकलक उपयोग करने के लिए मुझे बताओ करने जा रहे हैं, आप मुझे कहीं इसे सेट अप करने का तरीका बताता है कि उल्लेख कर सकते हैं और फिर कैसे MIPS करने के लिए इसके साथ पार संकलित करने के लिए? मुझे इनमें से कोई भी चीज़ नहीं मिल रही है। – Mike

0

आपको जीसीसी के अपने संस्करण को संकलित करना चाहिए जो क्रॉस-संकलन करने में सक्षम है। बेशक यह आसान नहीं है, इसलिए आप एक अलग दृष्टिकोण की तलाश कर सकते हैं .. उदाहरण के लिए this एसडीके।

1

आप जीसीसी को पार-संकलित कर सकते हैं ताकि यह x86 के बजाय एमआईपीएस कोड उत्पन्न कर सके। यह एक अच्छा सीखने का अनुभव है।

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

http://www.codesourcery.com/sgpp/lite/mips/portal/[email protected]=lite

25

जीसीसी कर सकते हैं उत्पादन विधानसभा आर्किटेक्चर की एक बड़ी संख्या के लिए कोड, MIPS शामिल हैं। लेकिन जब जीसीसी स्वयं संकलित किया जाता है तो जीसीसी उदाहरण लक्ष्य निर्धारित किए जाने वाले आर्किटेक्चर का क्या निर्णय लिया जाता है। एक उबंटू प्रणाली में आपको मिले प्रीकंपिल्ड बाइनरी को x86 (संभवतः 32-बिट और 64-बिट मोड दोनों) के बारे में पता है लेकिन एमआईपीएस नहीं।

आर्किटेक्चर से अलग एक लक्ष्य आर्किटेक्चर के साथ जीसीसी संकलित करना जिस पर जीसीसी स्वयं चल रहा है उसे क्रॉस-संकलन टूलचेन तैयार करने के रूप में जाना जाता है। यह करने योग्य है लेकिन बहुत कुछ दस्तावेज-पढ़ने और धैर्य की आवश्यकता है; आपको आम तौर पर पहले एक क्रॉस-असेंबलर और क्रॉस-लिंकर (जीएनयू बिनटिल्स) बनाने की आवश्यकता होती है, फिर क्रॉस-जीसीसी स्वयं बनाते हैं।

मैं buildroot का उपयोग करने की सलाह देता हूं। यह स्क्रिप्ट और मेकफ़ाइल का एक सेट है जो एक पूर्ण क्रॉस-संकलन टूलचेन और उपयोगिताओं के उत्पादन में सहायता के लिए डिज़ाइन किया गया है।दिन के अंत में, आपको एक लक्ष्य प्रणाली के लिए एक पूर्ण ओएस और विकास उपकरण मिलेंगे। इसमें आपके द्वारा क्रॉस-कंपाइलर शामिल है।

एक और काफी अलग समाधान QEMU उपयोग करने के लिए है। यह एमआईपीएस सिस्टम सहित विभिन्न प्रोसेसर और सिस्टम के लिए एक एमुलेटर है। आप इसे एक एमआईपीएस प्रोसेसर के साथ वर्चुअल मशीन चलाने के लिए उपयोग कर सकते हैं, और, उस मशीन के भीतर, एमआईपीएस के लिए एक ऑपरेटिंग सिस्टम स्थापित करें, उदा। Debian, एक लिनक्स वितरण। इस तरह, आप एक देशी जीसीसी (एक जीसीसी एक MIPS सिस्टम पर चलने और MIPS के लिए कोड का निर्माण) मिलता है।

QEMU तरह से एक बालक सरल हो सकता है; क्रॉस-संकलन का उपयोग करके कुछ बालों वाले विवरणों की कुछ समझ की आवश्यकता होती है। किसी भी तरह से, आपको लगभग 1 जीबी फ्री डिस्क स्पेस की आवश्यकता होगी।

+1

अगर मैं सर कर सकता हूं तो मैं आपको इस जवाब के लिए दो बार उखाड़ दूंगा, अगर आपको केवल कंपाइलर की आवश्यकता है तो चीयर्स – timB33

+0

: http://crosstool-ng.org/ एक विकल्प हो सकता है – Alex

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

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