मशीन पुस्तिका
इमोजी निर्देश संदर्भ
इमोजी या उसका निर्देश नाम लिखें। R0–R7 सुरक्षित पूर्णांक रखते हैं; R0 संचायक है। मेमोरी में 256 बाइट पते (0–255) हैं। गणित पूरे पूर्णांक रखता है; बिट क्रियाएँ चिह्न वाले 32-बिट मान लेती हैं।
लेबल कोलन पर समाप्त होते हैं। जंप खाली पंक्तियाँ और टिप्पणियाँ छोड़कर लेबल या शून्य-आधारित निर्देश क्रमांक लेते हैं। # टिप्पणी शुरू करता है। LOAD [10] मेमोरी पढ़ता है; LOAD 10 स्थिर संख्या 10 लोड करता है।
| इमोजी | निर्देश नाम और मान | व्यवहार | प्रयोगशाला |
|---|---|---|---|
| 📥 | LOAD मान [रजिस्टर] | मान, रजिस्टर या मेमोरी बाइट लोड करें। | |
| 💾 | STORE [मान] पता | मान की निचली बाइट मेमोरी में लिखें। | STORE · प्रयोगशाला में निर्देश आज़माएँ →LOAD 42 STORE 10 STORE 511 11 LOAD [10] PRINT LOAD [11] PRINT HALT अपेक्षित आउटपुट: |
| 📋 | COPY स्रोत-रजिस्टर गंतव्य-रजिस्टर | एक रजिस्टर दूसरे में प्रतिलिपि करें। | COPY · प्रयोगशाला में निर्देश आज़माएँ →LOAD 7 R1 COPY R1 R2 LOAD R2 PRINT HALT अपेक्षित आउटपुट: |
| ➕ | ADD मान | R0 में मान जोड़ें। | |
| ➖ | SUB मान | R0 से मान घटाएँ। | |
| ✖️ | MUL मान | R0 को मान से गुणा करें। | |
| ➗ | DIV गैर-शून्य-मान | R0 को भाग दें, ऋण अनंत की ओर पूर्णांक करें। | |
| 📊 | MOD गैर-शून्य-मान | R0 का चिह्न वाला शेष लें। | |
| 🔀 | AND मान | R0 और मान पर बिट वाला AND करें। | |
| 🔃 | OR मान | R0 और मान पर बिट वाला OR करें। | |
| ❌ | NOT | R0 के सभी चिह्न वाले 32 बिट उलटें। | NOT · प्रयोगशाला में निर्देश आज़माएँ →LOAD 255 NOT PRINT HALT अपेक्षित आउटपुट: |
| 🔄 | XOR मान | R0 और मान पर बिट वाला XOR करें। | |
| ⚖️ | CMP मान | R0 से मान घटाकर फ्लैग लगाएँ; R0 रखें। | CMP · प्रयोगशाला में निर्देश आज़माएँ →LOAD 7 CMP 7 JUMP_IF_ZERO same LOAD 0 JUMP show same: LOAD 1 show: PRINT HALT अपेक्षित आउटपुट: |
| ⏭️ | JUMP लक्ष्य | लेबल या शून्य-आधारित निर्देश क्रमांक पर जाएँ। | JUMP · प्रयोगशाला में निर्देश आज़माएँ →LOAD 1 JUMP show LOAD 99 show: PRINT HALT अपेक्षित आउटपुट: |
| ❓ | JUMP_IF_ZERO लक्ष्य | संग्रहित शून्य फ्लैग सच हो तो जंप करें। | JUMP_IF_ZERO · प्रयोगशाला में निर्देश आज़माएँ →LOAD 0 JUMP_IF_ZERO show LOAD 99 show: PRINT HALT अपेक्षित आउटपुट: |
| 🔁 | LOOP गिनती | जोड़ीदार RETURN पर समाप्त खंड दोहराएँ। | LOOP · प्रयोगशाला में निर्देश आज़माएँ →LOOP 0 LOAD 99 PRINT RETURN LOAD 1 LOOP 3 PRINT ADD 1 RETURN HALT अपेक्षित आउटपुट: |
| 🛑 | RETURN | लूप चक्कर समाप्त करें या सबरूटीन से लौटें। | RETURN · प्रयोगशाला में निर्देश आज़माएँ →LOAD 7 CALL increment PRINT HALT increment: ADD 1 RETURN अपेक्षित आउटपुट: |
| 📞 | CALL लक्ष्य | सबरूटीन बुलाएँ और अगला निर्देश बचाएँ। | CALL · प्रयोगशाला में निर्देश आज़माएँ →LOAD 3 CALL square PRINT LOAD 4 CALL square PRINT HALT square: MUL R0 RETURN अपेक्षित आउटपुट: |
| 🖨️ | PRINT | वर्तमान R0 मान आउटपुट में जोड़ें। | PRINT · प्रयोगशाला में निर्देश आज़माएँ →LOAD 3 PRINT PRINT HALT अपेक्षित आउटपुट: |
| 📲 | INPUT | R0 में पूर्णांक पढ़ें; इनपुट खाली हो तो प्रतीक्षा करें। | INPUT · प्रयोगशाला में निर्देश आज़माएँ →INPUT PRINT HALT पूर्णांक इनपुट: अपेक्षित आउटपुट: |
| ⬆️ | PUSH | R0 डेटा स्टैक पर रखें। | PUSH · प्रयोगशाला में निर्देश आज़माएँ →LOAD 42 PUSH LOAD 0 POP PRINT HALT अपेक्षित आउटपुट: |
| ⬇️ | POP | डेटा स्टैक से मान R0 में निकालें। | POP · प्रयोगशाला में निर्देश आज़माएँ →LOAD 11 PUSH LOAD 22 PUSH POP PRINT POP PRINT HALT अपेक्षित आउटपुट: |
| ⏹️ | HALT (या STOP) | वर्तमान निर्देश पर रुकें। | HALT · प्रयोगशाला में निर्देश आज़माएँ →LOAD 7 PRINT HALT LOAD 99 PRINT अपेक्षित आउटपुट: |
| 💤 | SLEEP मिलीसेकंड | बुलाने वाले से मिलीसेकंड विलंब माँगें। | SLEEP · प्रयोगशाला में निर्देश आज़माएँ →LOAD 1 PRINT SLEEP 100 LOAD 2 PRINT HALT अपेक्षित आउटपुट: |
| ⏸️ | NOP | मान और फ्लैग बदले बिना आगे बढ़ें। | NOP · प्रयोगशाला में निर्देश आज़माएँ →LOAD 7 CMP 7 NOP JUMP_IF_ZERO show LOAD 0 show: PRINT HALT अपेक्षित आउटपुट: |
फ्लैग, लूप और कॉल
Z का अर्थ नवीनतम परिणाम शून्य है। N ऋणात्मक और O चिह्न वाली 32-बिट सीमा के बाहर बताता है। किसी भी रजिस्टर में LOAD, COPY, गणित, बिट क्रिया, POP और INPUT फ्लैग बदलते हैं। CMP, R0 बदले बिना R0 में से मान घटाकर फ्लैग लगाता है। JUMP_IF_ZERO तुलना परिणाम सहित Z जाँचता है।
LOOP गिनती एक बार पकड़ता है और जोड़ीदार RETURN तक खंड दोहराता है; शून्य खंड छोड़ता है। CALL अलग वापसी-पता स्टैक लेता है। बुलाए फ़ंक्शन का RETURN बाहरी लूप जारी करने से पहले बुलाने वाले को लौटता है। PUSH और POP अलग डेटा स्टैक लेते हैं। SP 255 से शुरू होकर कुल डेटा और कॉल गहराई से घटता है, अधिकतम 256 प्रविष्टियाँ।
DIV ऋण अनंत की ओर पूर्णांक करता है; MOD चिह्न वाला शेष है। STORE निचली बाइट लिखता है (−1 से 255)। INPUT सुरक्षित पूर्णांक तक प्रतीक्षा करता है। SLEEP प्रयोगशाला में समयबद्ध विलंब माँगता है; नियत VM खुद प्रतीक्षा नहीं करता। प्रोग्राम HALT या अंत तक पहुँचकर समाप्त हो सकते हैं; अमान्य शाखा लक्ष्य त्रुटि हैं।
प्रयोगशाला में निर्देश आज़माएँ →