x86

2011-05-19 20 views
11

के लिए 16-बिट सी कंपाइलर की तलाश में मैं डॉस से x86 (वास्तविक मोड) से uc/OS-II को पोर्ट करने पर काम कर रहा हूं। मुझे चाहिए:x86

 
(1) A compiler generate real mode 16-bit x86 assembly 
(2) An assembler assemble the generated assembly into object file 
(3) A linker link object files and output executable (raw binary, COM, MZ, PE, ELF are fine) 
(4) Standard library without invoking DOS service (int 21h), only depend on BIOS service. 

मुझे आश्चर्य है कि कोई टूल-चेन ऐसा कर सकता है या नहीं।

धन्यवाद एक बहुत

उत्तर

5

चेक बाहर FreeDOS परियोजना। उनके पास developer tools है जिसमें कंपाइलर्स, असेंबलर और लिंकर्स शामिल हैं। आपको शायद मानक लाइब्रेरी को संशोधित करना होगा, हालांकि, यह int 21h की बजाय BIOS कॉल का उपयोग करता है।

-1

किसी भी बूटलोडर प्रोजेक्ट की जांच करें, जैसे कि GRUB। यह आसानी से स्पष्ट होना चाहिए कि उन्हें आपके द्वारा वर्णित सभी चीजों की भी आवश्यकता है।

+0

हैलो, जहां तक ​​मुझे पता है। ग्रब x86 – user639642

+1

@ user639642 पर संरक्षित मोड के तहत चल रहा है: यह वास्तविक मोड में शुरू होता है, और मुझे लगता है कि यह बाद में संरक्षित मोड सेट करता है, लेकिन यह निश्चित रूप से वास्तविक मोड में शुरू होता है (जब BIOS एमबीआर पर नियंत्रण स्थानांतरित करता है)। –

+1

मैंने grub2 का एक नज़र डाला है और इसे बनाया है। यह संकलन करने के लिए जीसीसी का उपयोग करें। जहां तक ​​मुझे पता है, जीसीसी में 16-बिट वास्तविक मोड x86 असेंबली समर्थन नहीं है। मुझे लगता है कि grub2 का असली मोड हिस्सा असेंबली में लिखा गया है। सी संरक्षित मोड के तहत प्रयोग किया जाता है। – user639642

1

16-बिट कंपाइलर्स? उनमें से कई यहाँ उल्लेख कर रहे हैं:

Is there a C compiler that targets the 8086?

आम तौर पर वे, शैक्षणिक अभ्यास के लिए उपयोग किया जाता है, इसलिए यदि यू शैक्षिक संस्थान में लक्षित कर आप उदाहरण के बहुत सारे भी पा सकते हैं:

http://www.google.com.sg/search?q=site%3Aedu+C+compiler+8086

1

एक पर पूर्व नौकरी में हमारे पास एक प्रोजेक्ट था जो वास्तविक मोड x86 प्लेटफ़ॉर्म पर चल रहे uc/OS पर आधारित था। हमने अधिक प्रसिद्ध बोर्लैंड या माइक्रोसॉफ्ट कंपाइलर्स की बजाय टॉपस्पेड सी का उपयोग किया, क्योंकि टॉपस्पेड सी उस सेट में से एकमात्र उपलब्ध था और उस समय volatile सही था। यूसी/ओएस बनाने के दौरान आपको जिसकी जरूरत है। टर्बो सी और माइक्रोसॉफ्ट सी दोनों (और मुझे लगता है कि यह क्विकसी भी) गलत तरीके से volatile चरों तक पहुंच जाता है - आम तौर पर रजिस्टरों और इसी तरह के टूटने में मूल्यों को कैशिंग करता है।

हालांकि, आपको टॉपस्पेड सी को पकड़ने में कठिनाई हो सकती है। और इसके असेंबलर वाक्यविन्यास ... अद्वितीय है। (मुझे लगता है कि यह मॉडुला -2 या कुछ पर आधारित है; यह एमएएसएम/टीएएसएम/नासम के विपरीत होने से समाप्त होता है जिसके साथ आप 100 गुना अधिक परिचित हो सकते हैं।)