我是一名大学生,也是一名iOS应用程序开发人员。我的大学里教我们8085微处理器,我想为同样的东西开发一个iOS模拟器对我来说会很酷也很有用
我想知道如何从头开始启动这个应用程序,以及我需要知道的所有信息。我学得很快,我可以同时学习和发展。任何好的建议我们都会由衷地感谢。谢谢。
发布于 2016-02-07 00:41:38
你可以构建一个interpreter,在你的iOS程序中编程the 8085 ISA,如果你想用高级语言编写代码,你有一个额外的工作要“编译”到处理器的汇编,然后解释它。
我应该强烈警告你关于IMENSE你将有大量的工作,在我看来这将不是一个实际的项目。
发布于 2016-04-29 01:21:18
这取决于您想要模拟8085的抽象级别。老生常谈地说,真正的芯片是一个40引脚的IC,所以这是40条信号线,根据它们的历史状态通过一组定义的转换进行排列。
更有用的是,您可能希望在数字总线级别进行模拟,这通常意味着只知道芯片在每个总线周期中尝试做什么(从这里读取,向那里写入等),或者只是解释8085指令流,以便像实际芯片中的执行单元那样对每个指令流做出反应。
如果是后者,那么整个代码主体就不会有太大的问题-程序的字节数组,抓取程序计数器指示要获取的下一个字节,使用switch语句来决定如何处理它,执行操作。我有一个嵌入在CP/M仿真器中的Z80 (与8085密切相关)仿真器(所以,仅仅是让指令流正确就足够了),这是几百行代码,它的目标是尽可能地不重复,速度很糟糕。
即使是前者,也不应该那么糟糕。在过去,我编写了一个Z80仿真器,它的输入和输出只有一个64位整数,表示当前总线状态的数字版本。它有一个广泛的结构,类似于以前的,但必须涉及排队未来的过渡和做出额外的中间指令决策。如果您现在只关心正确性和简单性,那么您可能只需要保留一个GCD块的NSArray,表示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年前写过,而只是跳到一个单独的线程上,并通过信号量在任何允许的中断点阻塞,这些中断在每个周期结束时放置)
发布于 2016-04-29 00:41:20
立即在App store上查看适用于iPhone的8085模拟器Sim8085和适用于iOS 8.0及更高版本的iPad。使用此应用程序的感觉几乎与使用8085培训套件相同。您还可以检查汇编程序和反汇编程序的功能。作为一个附加功能,发烧友选项卡可练习8085微处理器上可用的逻辑运算。有关如何使用说明,请访问此link。
https://stackoverflow.com/questions/35243438
复制相似问题