2009-05-21 11 views
5

मैं एक हार्डवेयर डीबग उपकरण बनाने के लिए देख रहा हूं जो नंगे CPU (x86), 32-बिट संरक्षित मोड और कोई ओएस पर चलता है। समय की बाधाओं के कारण, मैं x86 असेंबली में सभी टूल नहीं लिखूंगा। मुझे एडा भाषा पसंद है (लेकिन इसके साथ अनुभवहीन है) और सोचा कि इस परियोजना के लिए सी के बजाय एडा का उपयोग करना दिलचस्प हो सकता है।एडा और असेंबली

सी के साथ इनलाइन असेंबली या कॉलम I/O जैसी मूल चीजों के लिए BIOS तक पहुंचने या स्क्रीन पर टेक्स्ट प्रदर्शित करने के लिए असेंबली में लिखे गए उपप्रोग्राम का उपयोग कर सकते हैं। क्या एडा की समान क्षमता है? और यदि हां, तो क्या किसी को असेंबली विधियों को कॉल करने और उनके साथ जोड़ने के लिए किसी भी संसाधन या ट्यूटोरियल के बारे में पता है?

+2

आप ओएस का उपयोग न करने का आग्रह क्यों करते हैं। सभी हार्डवेयर (स्क्रीन, कीबोर्ड इत्यादि) तक पहुंचना मुश्किल है, ओएस को इसके साथ सौदा क्यों न करें। लिनक्स मुफ्त है ;-) – lothar

+0

मैं जोर क्यों देता हूं? खैर, मैं हार्डवेयर डिबग कर रहा हूं, लिनक्स सॉफ्टवेयर नहीं लिख रहा हूं! : पी मुझे पीसीआई बस रीसेट करने और कॉन्फ़िगरेशन रजिस्टरों को संशोधित करने की आवश्यकता है, और। मैंने लिनक्स के निम्न-स्तर के काम के साथ बहुत कुछ नहीं किया है, लेकिन विंडोज़ दुनिया में, समानता त्रुटि (PERR #), सिस्टम त्रुटियां (एसईआरआर #) और पीसीआई बस रीसेट (आरईएसईटी #) आपदाजनक घटनाएं हैं। –

उत्तर

5

आप एडा में इनलाइन असेंबली कोड का उपयोग कर सकते हैं। आपको System.Machine_Code पैकेज का उपयोग करने की आवश्यकता है जो (ओवरलोडेड) Asm फ़ंक्शन प्रदान करता है।

+0

धन्यवाद! यह ट्रिक काम आना चाहिए! –

2

जीएनएटी संदर्भ मैनुअल में Machine Code Insertions पर एक अनुभाग है, और जब यह जीएनएटी-विशिष्ट है, तो यह एक सामान्य संकलन प्राप्त करने में सक्षम होना चाहिए कि यह कैसे काम करता है भले ही आप एक अलग कंपाइलर का उपयोग कर रहे हों।

+0

धन्यवाद, मैं जीएनएटी से चिपके रहूंगा क्योंकि मैं मुफ्त टूल्स का उपयोग करना चाहता हूं। यह सब के बाद एक शौक परियोजना है। –

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