为iPhone开发8085模拟器的指南

时间:2016-02-06 16:33:52

标签: ios iphone microprocessors 8085

我是本科生和iOS应用开发者。 在我的大学里,我们正在接受8085微处理器的教学,我认为为我开发iOS模拟器对我来说很酷很有用

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

3 个答案:

答案 0 :(得分:1)

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

我应该强烈警告你,你将会有很多 IMENSE 的工作量,而且我认为这不是一个实际的项目。

答案 1 :(得分:1)

这取决于你想要模拟8085的抽象级别。迂腐地,真正的芯片是一个40引脚的IC,因此40条信号线根据它们的历史排列通过一组定义的过渡的状态。

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

如果后者那么代码的总体不会出现问题 - 程序的一个字节数组,抓住程序计数器说要获取的下一个代码,使用switch语句来决定如何处理它,执行操作。我是一个嵌入在CP / M仿真器中的Z80(与8085密切相关)的仿真器(所以,只需让指令流正确就足够了)并且这几百行很多,主要围绕着尽可能不重复,速度会被诅咒。

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

最聪明的中间地点可能是来自CPU的输出流是机器周期。如果您愿意,它们会精确地分解为总线状态,但也允许更高级别的解释。

编辑: 在它的Objective-C形式中,从而使其不那么紧凑,但希望海报可以最容易遵循,this是指令准确形式的Z80模拟器。

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

它是6502仿真器,但this是我(C ++)尝试消化所学到的经验教训;它是机器周期的机器周期(虽然机器周期恰好是6502上的一个时钟周期,但实际情况是 - 除非您断言就绪线,否则无论是否需要,它都会加载或存储每个周期(或不)并根据内部微操作列表安排其工作。这一切都以标题结束,因为我认为将模拟执行单元与任意总线集成的最佳方法是将其作为模板提供。如果我想要像之前链接的Z80代码一样完成四分之一周期总线报告,那么我只需使用该模板创建一个将每个机器周期序列化为适当总线状态的人。

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

答案 2 :(得分:0)

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