मैं एक व्यक्तिगत/शैक्षिक परियोजना के रूप में एक व्याख्याित 68k एमुलेटर लिख रहा हूं। अभी मैं एक साधारण, सामान्य डिकोडिंग तंत्र विकसित करने की कोशिश कर रहा हूं।68k निर्देशों को डीकोडिंग
जैसा कि मैं इसे समझता हूं, प्रत्येक निर्देश के पहले दो बाइट ऑपरेशन की पहचान करने के लिए पर्याप्त हैं (दो दुर्लभ अपवादों के साथ) और पढ़ने के लिए छोड़े गए शब्दों की संख्या, यदि कोई हो।
1. read two bytes
2. determine which instruction it is
3. extract the operands
4. pass the opcode and the operands on to the execute phase
की तरह मैं एक RISC चाप में पहले कुछ बिट्स के साथ कर सकता है मैं सिर्फ एक लुकअप तालिका में पहले दो बाइट्स पारित नहीं कर सकते हैं:
यहाँ मैं अपने डिकोडिंग चरण में पूरा करने के लिए चाहते हैं क्या है , क्योंकि ऑपरेंड "रास्ते में" हैं। मैं सामान्य रूप से भाग 2
कैसे पूरा कर सकता हूं?
व्यापक रूप से, मेरा प्रश्न है: मैं डिकोडिंग प्रक्रिया से ऑपरेटरों की विविधता को कैसे हटा सकता हूं?
अधिक पृष्ठभूमि:
यहाँ प्रोग्रामर संदर्भ मैनुअल की धारा 8.2 से एक आंशिक तालिका है:
Table 8.2. Operation Code Map
Bits 15-12 Operation
0000 Bit Manipulation/MOVEP/Immediate
0001 Move Byte
...
1110 Shift/Rotate/Bit Field
1111 Coprocessor Interface...
यह मेरे लिए महान भावना बनाया है, लेकिन फिर मैं प्रत्येक के लिए थोड़ा पैटर्न को देखो निर्देश और ध्यान दें कि एक भी निर्देश नहीं है जहां 15-12 बिट्स 0001, 0010, या 0011 हैं। तस्वीर के कुछ बड़े टुकड़े होने चाहिए जो मुझे याद आ रही है।
यह Decoding Z80 Opcodes साइट स्पष्ट रूप से डीकोडिंग बताती है, जो मुझे 68k प्रोग्रामर के संदर्भ मैनुअल में या गूगलिंग में नहीं मिला है।
आपकी परियोजना कितनी दूर बढ़ी है, क्या आपके पास डिस्सेबलर या एमुलेटर है? –
मैं अभी भी एक ऐसी स्क्रिप्ट तैयार कर रहा हूं जो एक पूर्ण लुक-अप तालिका उत्पन्न करता है। लगभग 70% किया गया। – mwcz
@CountablyInfinite क्या आप एक समान परियोजना पर काम कर रहे हैं? – mwcz