कंप्यूटर के भीतर तीस छोटे कदम

OpenKernel पाठ्यक्रम

विचार समझें, दृश्य CPU में आज़माएँ और मशीन से जाँची चुनौती हल करें। तीन निर्देशों से शुरू होकर अपने छोटे प्रोग्राम बनाएँ।

कोई खाता या स्थापना नहीं। पाठ तभी पूरा है जब हर चुनौती मामला पास हो। प्रगति और बैज इस ब्राउज़र में रहते हैं।

पाठ 1 शुरू करें → मुफ़्त प्रयोगशाला खोलें

आपकी प्रगति

प्रगति आपके ब्राउज़र में लोड होती है।

बैज पाने के लिए इकाई पूरी करें। बैज जाँची चुनौतियाँ दर्ज करते हैं, पृष्ठ भेंट नहीं।

निजी ब्राउज़िंग, साइट डेटा मिटाना या अलग उपकरण स्थानीय रिकॉर्ड हटा सकता है। आप किसी भी क्रम में पाठ ले सकते हैं।

इकाई 1 · लगभग 20 मिनट

मशीन से मिलें

पढ़ना/चलाना, रजिस्टर, PC, आउटपुट और रुकना समझाएँ।

3 में से 0 जाँची चुनौतियाँ पूरी

  1. आपका पहला इमोजी प्रोग्राम · 5 मिनट

    CPU में संख्या डालें, उसे छापें और रुकें।

  2. रजिस्टरों को समझें · 8 मिनट

    मान खोए बिना आठ तेज़ कार्यस्थानों का उपयोग करें।

  3. प्रोग्राम काउंटर का अनुसरण · 7 मिनट

    निष्पादन क्रम पढ़ें और स्रोत पंक्तियों को निर्देश पतों से अलग समझें।

इकाई 2 · लगभग 28 मिनट

गणित और इनपुट

बचाए इनपुट और जाँच मामलों के साथ पूर्णांक गणना बनाएँ।

3 में से 0 जाँची चुनौतियाँ पूरी

  1. इमोजी गणित · 9 मिनट

    जोड़, घटाव और गुणा को क्रमबद्ध कदमों में जोड़ें।

  2. भाग और शेषफल · 9 मिनट

    ऋणात्मक मानों सहित नीचे की ओर पूर्णांक भाग और चिह्न वाला शेष समझें।

  3. दो इनपुट वाला कैलकुलेटर · 10 मिनट

    निश्चित उत्तर की जगह फिर उपयोग किया जा सकने वाला कैलकुलेटर बनाएँ।

इकाई 3 · लगभग 28 मिनट

बाइट मेमोरी

मानों को पतों से अलग पहचानें और बाइट मेमोरी पढ़ें/लिखें।

3 में से 0 जाँची चुनौतियाँ पूरी

  1. मेमोरी: कंप्यूटर की नोटबुक · 10 मिनट

    R0 बदलने के बाद भी बाइट संग्रहित करें और वास्तव में वापस पढ़ें।

  2. रजिस्टरों में पते · 9 मिनट

    पते को डेटा की तरह इस्तेमाल करके खोज तालिका पढ़ें।

  3. बाइट और सीमाएँ · 9 मिनट

    देखें कि मेमोरी में मान क्यों लपेटते हैं, रजिस्टरों में नहीं।

इकाई 4 · लगभग 29 मिनट

निर्णय और फ्लैग

तुलना, शेष और लेबल वाले रास्तों से निर्णय व्यक्त करें।

3 में से 0 जाँची चुनौतियाँ पूरी

  1. शर्तों का तर्क: निर्णय लेना · 10 मिनट

    मानों की तुलना करें और संग्रहित फ्लैग के अनुसार रास्ता चुनें।

  2. सम या विषम · 9 मिनट

    शेष और शाखा से इनपुट का वर्ग तय करें।

  3. मेमोरी पर आधारित निर्णय · 10 मिनट

    संग्रहित डेटा से निर्णय लेकर परिणाम दर्ज करें।

इकाई 5 · लगभग 34 मिनट

दोहराव और काउंटर

सीमित लूप, शून्य मामले, काउंटर और संचायक उपयोग करें।

3 में से 0 जाँची चुनौतियाँ पूरी

  1. लूप: काम दोहराना · 10 मिनट

    LOOP को RETURN से जोड़ें और शून्य दोहराव ठीक सँभालें।

  2. काउंटर बनाना · 12 मिनट

    1 से 10 तक छापें और गिनती को सामान्य बनाएँ।

  3. एक से N तक योग · 12 मिनट

    संचायक को लूप काउंटर से अलग रखें।

इकाई 6 · लगभग 42 मिनट

स्थिति वाले एल्गोरिदम

फैक्टोरियल, फिबोनाची और उलटी प्रतिलिपि की अपरिवर्तनीय शर्तें समझें और जाँचें।

3 में से 0 जाँची चुनौतियाँ पूरी

  1. फैक्टोरियल और लूप की अपरिवर्तनीय शर्त · 12 मिनट

    गुणन संचायक का उपयोग करें और समझाएँ कि 0! क्यों 1 है।

  2. फिबोनाची क्रम · 15 मिनट

    दो पिछले मान रखें और सुरक्षित क्रम में बदलें।

  3. मेमोरी बफ़र उलटना · 15 मिनट

    स्रोत और गंतव्य संकेतकों से बफ़र को उलटे क्रम में प्रतिलिपि करें।

इकाई 7 · लगभग 39 मिनट

स्टैक और फ़ंक्शन

LIFO डेटा, कॉल फ़्रेम और बचाने/बहाल करने की सहमति उपयोग करें।

3 में से 0 जाँची चुनौतियाँ पूरी

  1. स्टैक: अंत में रखा, पहले निकला · 12 मिनट

    डेटा स्टैक में मान बचाएँ और उलटे क्रम में लौटाएँ।

  2. सबरूटीन को बुलाना · 12 मिनट

    कोड फिर उपयोग करें और CALL के बाद वाले निर्देश पर लौटें।

  3. बुलाने वाले की स्थिति बचाना · 15 मिनट

    फ़ंक्शन को अस्थायी जगह चाहिए तो बचाने और बहाल करने की सहमति अपनाएँ।

इकाई 8 · लगभग 39 मिनट

बिट और निरूपण

बिट चुनें, पलटें और चिह्न वाला 32-बिट व्यवहार समझाएँ।

3 में से 0 जाँची चुनौतियाँ पूरी

  1. बिट मास्क और फ्लैग · 12 मिनट

    AND से बिट चुनें और OR से लगाएँ।

  2. बिट पलटना · 12 मिनट

    XOR का उलटने योग्य बदलाव संग्रहित सेटिंग पर लागू करें।

  3. चिह्न वाले बिट और बड़ा मान · 15 मिनट

    NOT समझें और चिह्न मास्क से अंतर का चिह्न जाँचें।

इकाई 9 · लगभग 45 मिनट

शेड्यूलिंग, कोर और घटनाएँ

शेड्यूलिंग नीति, काम विभाजन और हैंडलर स्थिति बहाली अलग समझें।

3 में से 0 जाँची चुनौतियाँ पूरी

  1. सहकारी शेड्यूलिंग · 15 मिनट

    कार्य बारी-बारी चलाएँ और नीति को CPU निर्देशों से अलग समझें।

  2. कोर में काम बाँटना · 15 मिनट

    स्वतंत्र काम बाँटें और परिणाम जोड़ें।

  3. इंटरप्ट और हैंडलर · 15 मिनट

    घटना संभालें और रोके गए मुख्य मान को बहाल करें।

इकाई 10 · लगभग 56 मिनट

छोटे प्रोग्राम बनाएँ

निर्देशों से खेल, बफ़र उपकरण और काम वितरक बनाएँ।

3 में से 0 जाँची चुनौतियाँ पूरी

  1. छोटा लक्ष्य खेल · 18 मिनट

    संग्रहित स्थिति और स्कोर वाला तीन-चक्र खेल बनाएँ।

  2. स्टैक से चलने वाला बफ़र उपकरण · 18 मिनट

    इनपुट, लूप, स्टैक और क्रमांक वाली मेमोरी जोड़ें।

  3. आपका अपना छोटा ऑपरेटिंग सिस्टम · 20 मिनट

    कतार के काम सेवाओं को भेजें और परिणाम दर्ज करें।

पहली बार प्रोग्राम लिखने वालों का स्वागत

तीन शुरुआती मार्गदर्शिकाएँ

छोटे निर्देश क्रम का पालन करके आउटपुट अनुमान करें। वही प्रोग्राम प्रयोगशाला में खोलें, फिर अपने समाधान के लिए पाठ चुनौती लें।

आपका पहला प्रोग्राम

42 छापने वाला प्रोग्राम बनाएँ और उसका निष्पादन देखें।

  1. पैलेट से 📥 LOAD जोड़ें।
  2. LOAD के बाद 42 लिखें।
  3. अगली पंक्ति में 🖨️ PRINT जोड़ें।
  4. अंतिम पंक्ति में ⏹️ HALT जोड़ें।
  5. चलाएँ और देखें कि वास्तविक आउटपुट में 42 आता है।
  6. एक-एक कदम चलाकर R0, PC और आउटपुट देखें।
📥 42
🖨️
⏹️

अपेक्षित आउटपुट: 42

मार्गदर्शिका प्रयोगशाला में खोलें →

पाठ चुनौती लें →

इमोजी गणित

10 + 5 निकालें और संचायक में बदलाव देखें।

  1. 📥 LOAD जोड़ें।
  2. संख्या 10 लोड करें।
  3. अगली पंक्ति में ➕ ADD जोड़ें।
  4. ADD के मान के रूप में 5 लिखें।
  5. परिणाम दिखाने के लिए 🖨️ PRINT जोड़ें।
  6. रुकने के लिए ⏹️ HALT जोड़ें।
  7. चलाएँ और देखें कि आउटपुट 15 है।
  8. फिर एक-एक कदम चलाएँ और समझाएँ कि PRINT को योग क्यों मिलता है।
📥 10
➕ 5
🖨️
⏹️

अपेक्षित आउटपुट: 15

मार्गदर्शिका प्रयोगशाला में खोलें →

पाठ चुनौती लें →

उलटी गिनती का लूप

लेबल वाले निकास के साथ पाँच से एक तक गिनें।

  1. 📥 LOAD जोड़ें।
  2. शुरुआती गिनती 5 रखें।
  3. PRINT निर्देश को again: नाम दें ताकि जंप का गंतव्य स्पष्ट हो।
  4. छापने के बाद ➖ SUB जोड़ें।
  5. हर बार 1 घटाएँ।
  6. SUB के तुरंत बाद ❓ JUMP_IF_ZERO जोड़ें।
  7. निकास के लिए done लेबल लिखें।
  8. गिनती जारी रखने वाले रास्ते पर ⏭️ JUMP जोड़ें।
  9. PRINT पर लौटने के लिए again लेबल लिखें।
  10. लूप के बाद done: ⏹️ HALT जोड़ें।
  11. चलाएँ और वास्तविक आउटपुट 5, 4, 3, 2, 1 जाँचें।
  12. अंतिम घटाव देखें: शून्य फ्लैग सच होता है और निष्पादन HALT पर पहुँचता है।
📥 5
again: 🖨️
➖ 1
❓ done
⏭️ again
done: ⏹️

अपेक्षित आउटपुट: 5, 4, 3, 2, 1

मार्गदर्शिका प्रयोगशाला में खोलें →

पाठ चुनौती लें →