c - 用于写入虚拟机软 CPU 的分区内存



我正在尝试用C编写一个简单的软CPU,它将在嵌入式应用程序的虚构机器上工作。我是新手,所以请耐心等待。

我一直在尝试在 IDE 中执行此操作,但遇到了一个问题,我需要错误地分配内存并且没有获得用于分配寄存器的一致内存地址,因此我无法运行测试和调试。在实际的硬件上,我知道文档会给我特定寄存器、主内存和硬盘内存的地址,对吗?我希望能够为我的寄存器定义宏,然后我可以传递这些宏来读/写,但如果没有静态内存地址,这似乎是不可能的。

因此,我似乎需要一种很好的方法来分配具有静态地址的静态内存块,无论是在 IDE 中还是在我自己的带有文本编辑器的机器上。最好的方法是什么?作为参考,我正在使用Cloud9 IDE,但无法弄清楚如何在此平台上执行此操作。

谢谢!

你应该做一些类似uint8_t* const address_space = calloc( memory_size, sizeof(uint8_t) );的事情,当然检查返回值,然后将所有机器地址索引放入数组中,如address_space[dest] = register[src];。 如果模拟 CPU 可以处理不同大小的数据,或者对齐限制不如主机 CPU 严格,则需要使用memcpy()或指针强制转换来传输数据。

调试器将理解address_space[i]表达式,例如address_space是静态分配还是动态分配,但如果事先知道确切的大小,则可以静态分配它,例如模拟具有始终具有 65,536 字节 RAM 的 16 位地址的计算机。

最新更新