शेड्यूलिंग, कोर और घटनाएँ · 30 में पाठ 27 · लगभग 15 मिनट
इंटरप्ट और हैंडलर
घटना संभालें और रोके गए मुख्य मान को बहाल करें।
01 / समझाएँ
विचार समझें
इंटरप्ट ऐसी घटना है जो चलता कार्य कुछ समय के लिए हैंडलर की ओर भेजती है। हैंडलर वह स्थिति बचाए जिसकी रोके गए कोड को ज़रूरत है, अपना काम करे और फिर निष्पादन लौटाए। सिस्टम प्रयोगशाला घटना पहुँचने और फिर शुरू होने को स्पष्ट दर्ज करती है।
25-निर्देश CPU में छिपा इंटरप्ट निर्देश नहीं है। यह चुनौती CALL और डेटा स्टैक के बचाने/बहाल करने से हैंडलर मॉडल बनाती है। हैंडलर के बाद मुख्य मान फिर R0 में हो; घटना बाइट पते 240 और 241 पर हैं।
02 / आज़माएँ
होते हुए देखें
बहाल मुख्य मान 17, फिर संभाला घटना परिणाम 5 अपेक्षित है। लौटने के बाद स्टैक खाली है।
STORE 4 240
LOAD 17
CALL handler
PRINT
LOAD [241]
PRINT
HALT
handler: PUSH
LOAD [240]
ADD 1
STORE 241
POP
RETURNएक समय में एक निर्देश के लिए एक कदम लें। उदाहरण बदलकर फिर चला सकते हैं।
03 / चुनौती
इसे काम करने दें
मुख्य पूर्णांक, फिर घटना बाइट पढ़ें। घटना पता 240 पर रखें। हैंडलर बुलाएँ जो PUSH/POP से मुख्य R0 बचाते हुए घटना + 1 को बाइट मेमोरी 241 पर लिखे। बहाल मुख्य मान, फिर संग्रहित घटना परिणाम छापें।
जाँचक संपादक के वर्तमान प्रोग्राम को हर 3 मामले के लिए नई मशीन में चलाता है। वह इनपुट और मेमोरी खुद देता है; प्रयोगशाला का वर्तमान आउटपुट और मेमोरी परिणाम तय नहीं करते।
INPUT
COPY R0 R1
INPUT
STORE 240
LOAD R1
CALL handler
PRINT
LOAD [241]
PRINT
HALT
handler:
#
RETURNसंकेत चाहिए?
घटना लोड करने से पहले PUSH और परिणाम रखने के बाद POP करें।
हल किया समाधान दिखाएँ
प्रोग्राम पढ़ें, हर निर्देश का असर अनुमान करें, फिर प्रयोगशाला में एक-एक कदम चलाएँ।
INPUT
COPY R0 R1
INPUT
STORE 240
LOAD R1
CALL handler
PRINT
LOAD [241]
PRINT
HALT
handler: PUSH
LOAD [240]
ADD 1
STORE 241
POP
RETURNइमोजी CPU प्रयोगशाला
इमोजी प्रोग्राम
LOAD, ADD या दूसरा निर्देश नाम लिखकर Space दबाएँ ताकि इमोजी जुड़े। Ctrl/⌘ + Enter चलाता/रोकता है; Escape रोकता है; Ctrl/⌘ + ] इंडेंट करता है। Tab फोकस बदलता है। लेबल कोलन लेते हैं। जंप शून्य-आधारित निर्देश पते लेते हैं।
निर्देश मानचित्र और ब्रेकपॉइंट (0)
ब्रेकपॉइंट निर्देश से पहले रोकते हैं। चलाएँ रुके ब्रेकपॉइंट के पार एक बार बढ़ता है; एक कदम सीधे निर्देश चलाता है। स्रोत बदलने से पुराने ब्रेकपॉइंट और मशीन स्थिति साफ़ होते हैं।
CPU रजिस्टर
- R0
- 0
- R1
- 0
- R2
- 0
- R3
- 0
- R4
- 0
- R5
- 0
- R6
- 0
- R7
- 0
स्टैक और लूप फ़्रेम
SP = 255 − डेटा गहराई − कॉल गहराई। स्टैक मेमोरी से अलग है।
डेटा स्टैक (नीचे → ऊपर)
खाली
कॉल वापसी पते (नीचे → ऊपर)
खाली
लूप फ़्रेम
खाली
आउटपुट और इनपुट
आउटपुट देखने के लिए PRINT चलाएँ।
कतार का इनपुट: खाली
मेमोरी · 256 बाइट · 0 गैर-शून्य
हर खाना पता:मान दिखाता है। R = इस कदम में पढ़ा; W = इस कदम में लिखा। जाँचने या निष्पादन से पहले मान रखने के लिए खाना चुनें। तीर कुंजियों से चलें, पंक्ति के लिए Home/End और पूरी मेमोरी के लिए Ctrl/⌘ + Home/End लें।
निष्पादन रिकॉर्ड · 0 प्रविष्टियाँ
हाल की प्रविष्टियाँ नीचे हैं। अलग पूर्ण पहले/बाद की स्थिति के लिए कोई भी शून्य-आधारित क्रमांक जाँचें।
अपनी चुनौती जाँचें
जब चाहें जाँच सकते हैं। पूर्णता दर्ज करने के लिए हर मामला पास हो।
प्रगति केवल localStorage लेती है। इस ब्राउज़र में रहती है और सर्वर पर नहीं जाती।