【问题标题】:Guidelines to develop an 8085 simulator for iPhone为 iPhone 开发 8085 模拟器的指南
【发布时间】:2016-02-06 16:33:51
【问题描述】:

我是一名本科生,也是一名 iOS 应用开发人员。 在我的大学里,我们正在学习有关 8085 微处理器的知识,我认为为它开发一个 iOS 模拟器对我来说会很酷且很有用

我想知道如何从头开始启动应用程序以及我需要了解的所有信息。我是一个快速学习者,我可以同时学习和发展。 真诚感谢任何伟大的建议。谢谢。

【问题讨论】:

    标签: ios iphone microprocessors 8085


    【解决方案1】:

    你可以在你的 iOS 程序中构建一个interpreter,编程the 8085 ISA,如果你想用高级语言编码,你还有一个额外的工作来“编译”到处理器的程序集,然后解释它.

    我应该强烈警告您,您将有 IMENSE 的工作量,我认为这不是一个实际的项目。

    【讨论】:

    • “编译到处理器的程序集”是什么意思?
    • 如果你想用C写一个程序,你必须先把那个代码翻译成微处理器的汇编,这个过程叫做编译:P
    • @UlyssesR:是的,你是对的。开发它需要很长时间。但我的实现 (UI) 帮助我理解了自动布局和约束。
    【解决方案2】:

    这取决于您要模拟 8085 的抽象级别。迂腐地说,真正的芯片是一个 40 引脚 IC,因此有 40 条信号线根据其历史状态通过一组定义的转换进行排列。

    更有用的是,您可能想要在数字总线级别进行模拟,这通常意味着只知道芯片在每个总线周期内尝试做什么(从这里读取,向那里写入等),或者只是解释一个 8085 指令流,以便像实际芯片中的执行单元一样对每个指令做出反应。

    如果是后者,那么整个代码体就不会那么有问题了——程序的字节数组,获取程序计数器说要获取的下一个字节,使用switch 语句来决定要做什么处理它,执行操作。我有一个嵌入在 CP/M 仿真器中的 Z80(与 8085 密切相关)仿真器(因此,只要让指令流正确就足够了),这有几百行,主要是围绕不重复可能,该死的速度。

    即使是前者,也不应该那么糟糕。在过去,我编写了一个 Z80 仿真器,它的输入和输出只有一个 64 位整数,表示当前总线状态的数字版本。它具有与之前类似的广泛结构,但必然涉及对未来的转换进行排队并做出额外的中间指令决策。如果您现在只关心正确性和简单性,则可能只保留 GCD 块的NSArray,表示 CPU 在每个时钟转换或每个周期内应该做什么。

    可能最聪明的中间立场是让 CPU 的输出流以机器周期为单位。如果您愿意,它们会完全分解为总线状态,但也允许更高级别的解释。


    编辑: this 是 Objective-C 形式的 Z80 仿真器,它是指令精确形式的 Z80 仿真器。

    它更新并改编了一个更简单的C-format version that was merely a disassembler(事后看来:首先编写反汇编程序可能是一个很好的步骤)。然而,该项目确实包含完整的half-cycle accurate Z80 simulation。然而,我最终决定我不喜欢这种设计 - 进行 C 函数调用,尤其是通过函数指针,每半个周期都过于昂贵,并且将这种低级别的通信直接焊接到模拟的执行单元可能是矫枉过正;任何能准确描述相同过程但以更隐含的形式描述的东西都是可以接受的。

    它是一个 6502 模拟器,但 this 是我 (C++) 尝试消化这些经验教训的尝试;它是逐个机器周期的(尽管机器周期在 6502 上恰好是一个时钟周期长,碰巧 - 除非您断言就绪线,它会加载或存储每个周期,无论它是否需要)和根据内部微操作列表安排其工作。这一切都在标题中结束,因为我认为将模拟执行单元与任意总线集成的最佳方法是将其作为模板提供。如果我想要精确的四分之一周期总线报告,例如之前链接的 Z80 代码,那么我只需使用模板创建一个将每个机器周期序列化为适当总线状态的人。

    (...尽管如果您只是在谈论仿真,那么即使在任何周期可中断的周期精度也不一定意味着将序列化为我现在喜欢的更小的步骤 — this 6502 emulation 我写道大约 15 年前,只是跳转到一个单独的线程并在任何允许的中断点通过信号量阻塞,这些中断点放置在每个周期结束时)

    【讨论】:

      【解决方案3】:

      现在在 App Store 上查看适用于 iOS 8.0 及更高版本的 iPhone 和 iPad 的 8085 Simulator Sim8085。使用此应用程序的感觉与使用 8085 培训套件几乎相同。您还可以检查汇编器和反汇编器功能。作为一项附加功能,发烧友选项卡可以练习 8085 微处理器上可用的逻辑操作。有关如何使用说明,请访问此link

      【讨论】:

      • @Viki:正如另一个答案中提到的那样,会有很多时间和工作。对我来说,这是一个很好地学习自动布局和其他一些 iOS 功能的示例应用程序。
      猜你喜欢
      • 2012-11-06
      • 2011-12-24
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多