2017-05-26 41 views
-1

我正试图在C中编写一个简单的软CPU,该CPU将用于嵌入式应用程序的假想机器上。我对此很陌生,所以请耐心等待。用于写入虚拟机的软CPU的分区内存

我一直想在IDE中做到这一点,但遇到一个问题,我需要malloc的内存,并没有获得一致的内存地址分配我的寄存器,所以我无法运行测试和调试。在一个实际的硬件上,我知道文档会给我特定的寄存器,主内存和硬盘内存的地址,对吗?我希望能够为我的寄存器定义宏,然后我可以将它们传递给读/写,但是如果没有静态存储器地址,这似乎是不可能的。

所以看起来好像我需要一个很好的方式来分配静态地址的内存静态块,无论是在IDE中,或在我自己的机器上用文本编辑器。什么是最好的方法来做到这一点?作为参考,我正在使用Cloud9 IDE,但无法弄清楚如何在此平台上执行此操作。

谢谢!

+1

你在想它是错误的...运行在虚拟CPU上的代码可能需要固定的I/O寄存器等地址。你的代码应该是*翻译*地址。例如。对于RAM,你可以将它们作为偏移量分配到用'malloc'分配的块。 –

回答

1

你应该做一些像​​,检查返回值当然,然后使所有的机器地址索引到数组中,如address_space[dest] = register[src];。如果您的仿真CPU可以处理不同大小的数据或者具有比主机CPU更严格的对齐限制,则需要使用memcpy()或指针转换来传输数据。

你的调试器会理解像address_space[i]表达是否address_space是静态或动态分配的,但你可以静态分配,如果你事先知道确切的尺寸,如模仿一台具有16位地址总是具有完全相同65536 RAM的字节。

+0

这是完美的,我没有意识到我可以像处理数组一样对待malloc的内存块。谢谢! – Davigor