छोटे प्रोग्राम बनाएँ · 30 में पाठ 29 · लगभग 18 मिनट
स्टैक से चलने वाला बफ़र उपकरण
इनपुट, लूप, स्टैक और क्रमांक वाली मेमोरी जोड़ें।
01 / समझाएँ
विचार समझें
स्टैक स्वाभाविक रूप से क्रम उलटता है। हर बाइट पढ़कर PUSH करें, फिर हर बाइट POP करके नए बफ़र में लिखें। दो लूप संग्रह और आउटपुट चरण अलग रखते हैं।
इनपुट N से शुरू होता है, जो आगे की बाइटों की संख्या है। N को दोनों लूप के रजिस्टर में रखें। खाली बफ़र में दोनों चरणों के शून्य चक्कर हों और कोई आउटपुट या अनचाही मेमोरी लिखाई न हो।
02 / आज़माएँ
होते हुए देखें
आउटपुट और खाने 0–2 में 30, 20, 10 अपेक्षित हैं।
LOAD 3 R3
LOAD 10
PUSH
LOAD 20
PUSH
LOAD 30
PUSH
LOAD 0 R1
LOOP R3
POP
STORE R1
PRINT
LOAD R1
ADD 1
COPY R0 R1
RETURN
HALTएक समय में एक निर्देश के लिए एक कदम लें। उदाहरण बदलकर फिर चला सकते हैं।
03 / चुनौती
इसे काम करने दें
N (0–5), फिर ठीक N बाइट पढ़ें। डेटा स्टैक से उन्हें उलटें। उलटा क्रम छापें और मेमोरी पता 0 से रखें।
जाँचक संपादक के वर्तमान प्रोग्राम को हर 4 मामले के लिए नई मशीन में चलाता है। वह इनपुट और मेमोरी खुद देता है; प्रयोगशाला का वर्तमान आउटपुट और मेमोरी परिणाम तय नहीं करते।
INPUT
COPY R0 R3
LOOP R3
#
RETURN
LOAD 0 R1
LOOP R3
#
RETURN
HALTसंकेत चाहिए?
STORE और PRINT दोनों उपयोग कर लें तब तक बाइट R0 में रखें; उसके बाद ही गंतव्य संकेतक बढ़ाएँ।
हल किया समाधान दिखाएँ
प्रोग्राम पढ़ें, हर निर्देश का असर अनुमान करें, फिर प्रयोगशाला में एक-एक कदम चलाएँ।
INPUT
COPY R0 R3
LOOP R3
INPUT
PUSH
RETURN
LOAD 0 R1
LOOP R3
POP
STORE R1
PRINT
LOAD R1
ADD 1
COPY R0 R1
RETURN
HALTइमोजी 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 लेती है। इस ब्राउज़र में रहती है और सर्वर पर नहीं जाती।