【发布时间】:2014-03-05 16:52:02
【问题描述】:
作为一个小项目,我一直在创建一个较旧的微型计算机 CPU 仿真器,主要基于 8080 的架构。它的 8 位通用寄存器 (according to wikipedia) 可以用作“三个 16 位寄存器对”以及正常的 8 位模式。这是我的问题。
我第一次尝试建模是单独命名的字节和短裤,在我重新阅读规范页面并发现 16 位寄存器实际上不是他们自己的东西之前,它工作得很好。哎呀。
我现在尝试的是一个字节数组,每个 8 位寄存器有一个位置,两个位置为堆栈/指令指针保留。这对 8 位寄存器非常有效,而且管理起来也少了很多麻烦,但我实际上并不知道如何将两个字节转换为内存短。这甚至可能吗?如果没有,您对其他方法有什么建议吗?
【问题讨论】:
-
考虑使用联合。或者,如果您想直接使用内存表示,则可以使用指针。
-
呃,我将如何创建一个指向不同类型的两个变量的指针?我还在学习 C++ 魔法。
-
基本上你会有两个不同类型的指针具有相同的内存地址。我不确定 C++ 是否有很多值得推荐的地方。然而,在 C 中这将是微不足道的,这在很大程度上是因为在 C 中裸露的编程模型与您尝试模拟的那种硬件架构之间的相似性。诚然,指针方法在某种程度上要求您的模拟架构和主机架构具有相同的字节序……这在当前时刻很有可能。
标签: c++ emulation intel-8080