मैं एनईएस के Javascript emulator पर देख रहा हूं कि यह कैसे काम करता है और समझने के लिए।ऑपरेशन पता दो से बढ़ता क्यों है?
this line पर:
addr = this.load(opaddr+2);
opcode दो से वृद्धि की जाती है। हालांकि, documentation (परिशिष्ट ई देखें) मैं पढ़ रहा हूँ कहते हैं:
शून्य पेज का उपयोग करता है को संबोधित एक भी संकार्य जो शून्य पेज ($ 0000- $ 00FF) जहां के लिए डेटा में कोई पता करने के लिए एक सूचक रूप में कार्य करता संचालित किया जा सकता है। शून्य पेज एड्रेसिंग का उपयोग करके, ऑपरेटर के लिए केवल एक बाइट आवश्यक है, इसलिए निर्देश छोटा है और इसलिए, दो ऑपरेटरों को संबोधित करने वाले मोड के साथ निष्पादित करने के लिए तेज़ी से निष्पादित करने के लिए तेज़ है। शून्य पृष्ठ निर्देश का एक उदाहरण और $ 12 है।
तो यदि ऑपरेंड का तर्क केवल एक बाइट है, तो इसे इसके बाद सीधे दिखाई नहीं देना चाहिए, और + 2 के बजाय + 1 होना चाहिए? क्यों +2?
इस तरह मुझे लगता है कि यह काम करता है, जो गलत हो सकता है।
-------------------------
| 0 | 1 | 2 | 3 | 4 | 5 | <- index
-------------------------
| a | b | c | d | e | f | <- memory
-------------------------
^
\
PC
और हमारे पीसी 0
है, a
की ओर इशारा करते: हमारी स्मृति लगता है कि मान लीजिए। इस चक्र के लिए, हम कहते हैं कि opcode:
var pc= 0; //for example's sake
var opcode= memory[pc]; //a
तो नहीं पहले संकार्य अगले स्लॉट होना चाहिए, जैसे कि b
?
var first_operand = memory[pc + 1]; //b
ओपोड कितना विस्तृत है? –
@PlatinumAzure पीसी 16 बिट है, मुझे लगता है कि ओपोड 8 बिट –
है मुझे लगता है कि @PlatinumAzure सही रास्ते पर है। एकल बाइट ऑपरेंड तक पहुंचने के लिए ओपोड पर छोड़ना है। –