2011-09-07 13 views
5

मैं एक व्यक्तिगत/शैक्षिक परियोजना के रूप में एक व्याख्याित 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 प्रोग्रामर के संदर्भ मैनुअल में या गूगलिंग में नहीं मिला है।

+0

आपकी परियोजना कितनी दूर बढ़ी है, क्या आपके पास डिस्सेबलर या एमुलेटर है? –

+0

मैं अभी भी एक ऐसी स्क्रिप्ट तैयार कर रहा हूं जो एक पूर्ण लुक-अप तालिका उत्पन्न करता है। लगभग 70% किया गया। – mwcz

+0

@CountablyInfinite क्या आप एक समान परियोजना पर काम कर रहे हैं? – mwcz

उत्तर

2

मैंने प्रत्येक निर्देश के लिए प्रत्येक संभावित पैटर्न के साथ बस एक लुक-अप तालिका बनाने का निर्णय लिया है। यह मेरा पहला विचार था, लेकिन मैंने इसे "अपमानजनक, सुरुचिपूर्ण" के रूप में त्याग दिया। अब, मैं इसे "वास्तव में तेज़" के रूप में स्वीकार कर रहा हूं।

+1

आह, एमुलेटर-कोडिंग का पहला नियम: कभी-कभी घबराहट दिखने वाला ब्रूट-बल दृष्टिकोण सबसे अच्छा होता है एक। :) –

+1

और यह सीपीयू पर इतना निर्भर करता है जो अनुकरण चलाता है। एक 16 मेगाबाइट एल 2 चमत्कार कर सकते हैं। :) –

संबंधित मुद्दे