2010-09-18 11 views
5

किसी बिंदु पर एनईएस एमुलेटर बनाने में मेरे हाथ की कोशिश करने से पहले प्रोग्राम किए गए माइक्रोकंट्रोलर होने से पहले, मैं वास्तव में सोच रहा था कि सी ++ में इंटरप्ट कैसे कार्यान्वित किए जाते हैं?सी/सी ++ में इंटरप्ट्स ??? वे कैसे कार्यान्वित/कोडित हैं?

उदाहरण के लिए, क्या कोई प्रोग्राम जानता है कि जब मैं अपने माइक में बात करता हूं या अपना माउस ले जाता हूं तो प्रतिक्रिया कैसे करें? क्या यह लगातार इन बंदरगाहों को मतदान कर रहा है?

हार्डवेयर डिवाइस के लिए बाधा उत्पन्न करते समय (कहें, एनईएस एमुलेटर के लिए), क्या आपको लगातार मतदान करना है या ऐसा करने का कोई और तरीका है?

उत्तर

6

यह एक कार्यान्वयन-विशिष्ट प्रश्न है, लेकिन व्यापक स्ट्रोक: इंटरप्ट्स के माध्यम से हार्डवेयर तक सीधी पहुंच आम तौर पर ओएस तक सीमित होती है (विशेष रूप से, कर्नेल में।) आपके कोड में किसी भी आधुनिक सिस्टम पर ऐसी पहुंच नहीं होगी। इसके बजाय, आप हार्डवेयर तक पहुंचने के लिए ओएस-विशिष्ट एपीआई का उपयोग करेंगे।

संक्षेप में: डेस्कटॉप ऑपरेटिंग सिस्टम एम्बेडेड, माइक्रोकंट्रोल डिवाइसों की तरह व्यवहार नहीं करते हैं।

उपयोगकर्ता इनपुट आमतौर पर ईवेंट लूप नामक किसी चीज़ द्वारा आधुनिक सिस्टम पर संभाला जाता है।

int main(int argc, char *argv[]) { 
    Event *e = NULL; 
    while (e = App::GetNextEvent()) { 
     switch (e->getType()) { 
     case E_MOUSEUP: 
     case E_RIGHTMOUSEDOWN: 
     case E_KEYDOWN: 
     // etc. 
     } 
    } 

    return EXIT_SUCCESS; 
} 

इस उदाहरण में, App::GetNextEvent() व्यस्त इंतजार नहीं करता है:: यह बस बैठता है और ओएस है कि एक घटना आ गया है द्वारा आंतरिक रूप से संकेत दिया है जब तक कुछ नहीं करता है आपका आवेदन विशिष्ट कार्यान्वयन OSes के बीच अलग कुछ इस तरह होता है, । इस तरह, कोई निरंतर मतदान की आवश्यकता नहीं होती है और ओएस अधिक कुशलतापूर्वक प्रक्रियाओं के लिए समय स्लाइस को बाहर कर सकता है।

हालांकि ... एनईएस एक आधुनिक प्रणाली नहीं है; अनुकरण करने का मतलब है कि आपको NES के इंटरप्ट्स और हार्डवेयर का अनुकरण करने की आवश्यकता है। ऐसा करना एक बहुत बड़ा उपक्रम है और मेजबान ऑपरेटिंग सिस्टम के अंतर्निहित हार्डवेयर या इंटरप्ट से कोई संबंध नहीं है। एनईएस में 6502 प्रोसेसर आधुनिक मानकों से बहुत आसान है; ऐसी किताबें उपलब्ध हैं जो समान सरल प्रोसेसर को अनुकरण करने पर चर्चा करती हैं, हालांकि इस समय खिताब मुझसे बचते हैं।

क्या इससे मदद मिलती है?

+0

यह निश्चित रूप से करता है, धन्यवाद :) – Russel

+0

मुझे इसे और अधिक देखना होगा, लेकिन पॉइंटर्स के लिए धन्यवाद! – Russel

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