首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算机仿真器代码执行

计算机仿真器代码执行
EN

Stack Overflow用户
提问于 2016-06-14 02:19:46
回答 1查看 121关注 0票数 0

我正在尝试创建一个MC6808微处理器模拟器。我的程序一直工作到将目标代码输入到虚拟机的程度。下一步是执行程序,这是我的问题的来源。

解释(虚拟)内存中的所有代码(指令)的最有效方法是什么?因为每个代码都执行特定的行为(加、减、移等)涉及MC6808寄存器,我能想到的唯一解决方案是为197个可用代码中的每一个使用一系列IF语句。

代码语言:javascript
复制
    if (Instruction == 0x86) // LDAA #Value
   {
    accumulatorA = MC6800[(InstructionPointer + 1)];//Value location
    ProgLength -= 1;
    InstructionPointer += 2;
        UpdateRegisterStatus();
   }

我有一个MC6800类,它包含所有寄存器、内存堆栈、地址指针等,我有一个所有可用助记符的列表:

代码语言:javascript
复制
        //List sample
        mnemonicsList.Add(new Mnemonics("ABA" , 0, 5, 0x1B, 1, 2, 4));
        mnemonicsList.Add(new Mnemonics("ADCA", 1, 1, 0x89, 2, 2, 1));
        mnemonicsList.Add(new Mnemonics("ADCA", 2, 2, 0x99, 2, 3, 1));
        mnemonicsList.Add(new Mnemonics("ADCA", 3, 3, 0xA9, 2, 5, 1));
        mnemonicsList.Add(new Mnemonics("ADCA", 4, 4, 0xB9, 3, 4, 1));
        mnemonicsList.Add(new Mnemonics("ADCB", 1, 1, 0xC9, 2, 2, 2));
        mnemonicsList.Add(new Mnemonics("ADCB", 2, 2, 0xD9, 2, 3, 2));
        mnemonicsList.Add(new Mnemonics("ADCB", 3, 3, 0xE9, 2, 5, 2));
        mnemonicsList.Add(new Mnemonics("ADCB", 4, 4, 0xF9, 3, 4, 2));

        //LIST KEY:  mnemonic, operand type, addressing mode, object code,
        //byte size, machine cycles, register used

谢谢你的建议

EN

回答 1

Stack Overflow用户

发布于 2016-06-14 03:38:59

大量条件的标准方法是swtich和字典或操作(Refactor long switch statement)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37801977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档